元素列表解析 JSON 后缺少 ]
Posted
技术标签:
【中文标题】元素列表解析 JSON 后缺少 ]【英文标题】:missing ] after element list parsing JSON 【发布时间】:2010-10-21 21:59:05 【问题描述】:执行:
$.post(
"/url/to/method",
,
function(data)
var obj2 = eval("("+$(data).children()+")");
// OR var obj = $.evalJSON($($(data).children())); // Jquery-json
$body = $("#AAA");
$body.html(obj.fied);
,
"xml"
);
而在萤火虫中变成“元素列表后缺少]”(在第 5 行或第 6 行)错误。方法的 JSON 输出已通过 jsonlint.com/
验证可能很明显,但我是 AJAX/JSON 的新手。谢谢
【问题讨论】:
不要使用eval
解析JSON数据。请改用JSON.parse
。
@Gumbo,同意 JSON.parse 可以在json.org/js.html找到
如果您发布 JSON,它会更容易提供帮助。
也使用jslint.com 进行验证! :)
【参考方案1】:
使用JSON.parse 方法,或者在将它传递给eval 之前确保在括号旁边包含一个空格...
eval(" (" + data + ") ");
【讨论】:
使用带空格的 eval 仍然不行(同样的错误)。使用 JSON.parse 我出现一个奇怪的错误:text.replace 不是函数,json2.js:445 请发布 JSON。如果它包含敏感信息,请使用虚拟数据重新创建错误。显然有问题。【参考方案2】:您是在 .NET 2.0 中编写的吗?如果是这样,请尝试将您的数据构造成查询字符串,而不是传递 JSON 对象。
示例: var1=alma&var2=用户
其中“var1”和“var2”是您的网络方法期望的参数名称。使用帖子传递这个..数据:querystring 我在 2.0 中将 JSON 传递给 web 服务时遇到了问题。
祝你好运
【讨论】:
【参考方案3】:可能发生的情况是您的 $.post 调用已经返回一个 JSON 对象。 jQuery 将尝试自动检测 JSON 并为您解析它。当您对这样的 JSON 对象调用 eval 时,您会看到此错误。偷偷摸摸!只需按原样使用数据对象即可。
【讨论】:
我遇到了这个问题,现在只使用我能够访问 JSON 成员的对象。谢谢。 我也能够用这个答案解决我的问题。谢谢。【参考方案4】:原来 jQuery 会尝试判断结果是否为 JSON 并自动解析它,但在这种情况下,数据已经是一个 javascript 对象,而不是等待解析的 JSON 字符串。所以你可以直接使用这个对象,而不是使用 eval() 和 JSON.parse。
【讨论】:
以上是关于元素列表解析 JSON 后缺少 ]的主要内容,如果未能解决你的问题,请参考以下文章