Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript中的json获取值_Javascript_Json - Fatal编程技术网

从javascript中的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

嗨,我有一个简单的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.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分钟做出的。在我看来这没用。