在javascript中从json获取价值

时间:2012-11-06 20:25:33

标签: 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.max_output_watts);
          });
...

警报现在只是一个占位符,但我不明白为什么警报值未定义'。如果我这样做:

...
$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
              alert(data);
          });
...

我按预期得到了完整的json转储。

任何帮助都非常感激。

4 个答案:

答案 0 :(得分:5)

由于您的alert(data);为您提供了完整的JSON转储,这可能意味着服务器上的JSON已经双重编码

jQuery会为你解析一次,但是你需要再次解析它。

$.getJSON(pop_model_dims_url, {model_id: selected}, function(data, jqXHR){
    data = $.parseJSON(data);
    alert(data.max_output_watts);
});

当然这是不是一个正确的修复。正确的解决方案是将其修复在服务器上。

完成后,您将不再需要$.parseJSON

答案 1 :(得分:3)

你的JSON可能是一个字符串。你必须先解析它。使用

var obj = JSON.parse(data);
alert(obj.max_output_watts);

答案 2 :(得分:1)

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"
 }

答案 3 :(得分:0)

你必须解析为JSON,因为它看起来不像json,因为该方法是未定义的:

这是jQuery的符号:

data = $.parseJSON(data);

data.max_output_watts;

以下是你应该如何做的事情:

data = JSON.parse(data);

data.max_output_watts;

问候!