我正在尝试解析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”。我做错了什么?
答案 0 :(得分:6)
这不是有效的JSON字符串 正确的字符串看起来像这样:
'{ "Display": "string1", "Sell": "string2" }'
答案 1 :(得分: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);
});
答案 2 :(得分: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'.
答案 3 :(得分:0)
您可以轻松尝试:
var json = jQuery.parseJSON(response);
//get value from response of json
var Display = json[0].Display;
您所需要的只是用于指定数据的[0],因为这是默认参数(未设置)。
它对我有用!