2

我正在尝试解析 JSON 字符串,但是当我这样做时,我得到了未定义。

var codes = jQuery.parseJSON(response);

$.each(codes, function (key, value) {
  alert(value.Display);
});

这是codes上面变量的内容:

["{ Display = string1, Sell = string2 }", 
 "{ Display = string1, Sell = string2 }"]

警报返回值。显示为undefined。我期待“String1”。我究竟做错了什么?

4

4 回答 4

6

这不是一个有效的 JSON 字符串。
正确的字符串如下所示:

'{ "Display": "string1", "Sell": "string2" }'
于 2013-01-06T15:41:24.003 回答
3

你不能。数组中没有Display属性,它是一个包含两个字符串的数组。

字符串类似于 JSON,但不足以解析。

如果您使字符串遵循 JSON 标准,您可以将数组中的每个项目解析为一个对象,然后您可以访问该Display属性:

var response = '["{ \\"Display\\": \\"string1\\", \\"Sell\\": \\"string2\\" }", "{ \\"Display\\": \\"string1\\", \\"Sell\\": \\"string2\\" }"]';

var codes = jQuery.parseJSON(response);

$.each(codes, function (key, value) {
  var obj = jQuery.parseJSON(value);
  alert(obj.Display);
});

演示:http: //jsfiddle.net/Guffa/wHjWf/

或者,您可以使整个输入遵循 JSON 标准,以便您可以将其解析为对象数组:

var response = '[{ "Display": "string1", "Sell": "string2" }, { "Display": "string1", "Sell": "string2" }]';

var codes = jQuery.parseJSON(response);
console.log(codes);
$.each(codes, function (key, value) {
  alert(value.Display);
});

演示:http: //jsfiddle.net/Guffa/wHjWf/1/

于 2013-01-06T15:43:29.000 回答
1

我意外地对我的数组数据进行了两次 json 编码,从而得到了这个错误。

像这样:

$twicefail = '{"penguins" : "flipper"}';
return json_encode( $twicefail );

然后在我看来,我是这样捡起来的:

var json_data = jQuery.parseJSON(my_json_response);

alert(json_data.penguins);      //Here json_data.penguins is undefined because I
                                //json_encoded stuff that was already json. 

更正后的代码如下:

$twicefail = '{"penguins" : "flipper"}';
return $twicefail;

然后在我看来,像这样选择它:

var json_data = jQuery.parseJSON(my_json_response);

alert(json_data.penguins);     //json_data.penguins has value 'flipper'.
于 2014-08-18T22:32:09.550 回答
0

你可以很容易地试试这个:

var json = jQuery.parseJSON(response);
//get value from response of json
var Display = json[0].Display;

您只需要 [0] 来指定数据,因为这是默认参数(未设置)。
这个对我有用!

于 2020-03-01T11:04:37.027 回答