从javascript中的json获取值
嗨,我有一个简单的JSON输出:从javascript中的json获取值,javascript,json,Javascript,Json,嗨,我有一个简单的JSON输出: "{ \"max_output_watts\": 150, \"frame_length_inches\": \"62.20\", \"frame_width_inches\": \"31.81\" }" 我在这样的函数中使用: ... $.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){ alert(data.ma
"{
\"max_output_watts\": 150,
\"frame_length_inches\": \"62.20\",
\"frame_width_inches\": \"31.81\"
}"
我在这样的函数中使用:
...
$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
alert(data.max_output_watts);
});
...
警报现在只是一个占位符,但我不明白为什么警报值是“未定义的”。如果我这样做:
...
$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
alert(data);
});
...
我得到了预期的完整json转储
非常感谢您的帮助。您的JSON可能是一个字符串。你必须先解析它。使用
var obj = JSON.parse(data);
alert(obj.max_output_watts);
由于您的警报(数据)
为您提供完整的JSON转储,这可能意味着JSON已在服务器上进行了双重编码
jQuery将为您解析它一次,但您需要再次解析它
$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
data = $.parseJSON(data);
alert(data.max_output_watts);
});
当然,这不是一个合适的解决方案。正确的解决方案是在服务器上修复它
完成此操作后,您将不再需要
$.parseJSON
。您必须解析为JSON,因为它看起来不像JSON,因为方法未定义:
以下是jQuery的符号:
data = $.parseJSON(data);
data.max_output_watts;
以下是您在没有以下内容的情况下应如何做:
data = JSON.parse(data);
data.max_output_watts;
问候 jQuery getJSON应该自己解析JSON。 如果JSON是这样的:
"{
\"max_output_watts\": 150,
\"frame_length_inches\": \"62.20\",
\"frame_width_inches\": \"31.81\"
}"
解析器将其误认为是字符串
它应该是这样的纯文本:
{
"max_output_watts": 150,
"frame_length_inches": "62.20",
"frame_width_inches": "31.81"
}
你真的有
\“
或者这就是你生成JSON的方式吗?@nathanhayfield?如果是JSON,你可以通过对象符号来访问它。迭代为什么?\”
是如何使用python的JSON序列化程序生成转储的。警报(数据类型)
给你什么?@DarwinTech cool,然后解析它!好的,这样行。所以我真的要解码两次?这听起来很奇怪。@DarwinTech:不,这是我在底部提出的观点。服务器端出现错误,对其进行了两次编码。一旦你解决了这个问题,你就根本不需要解析它了,因为$.getJSON
会帮你做的。给这个分数,他们已经喝了咖啡。完全正确。服务器上的代码错误意味着确实发生了双重编码任务。我的错。谢谢你的解释。让失望的选民自己解释一下。。(好的,今天一定有人睡错了床)不,这是对的,上面证实了,不管是谁,你错过了这趟车。好吧,非常感谢你修正排名:)我没有投反对票,但这个答案是在其他人说同样的话(并添加了一个解决方案)之前5分钟做出的。在我看来这没用。