JQuery.parseJSON无法使用字符串

JQuery.parseJSON not working with string

本文关键字:字符串 parseJSON JQuery      更新时间:2023-09-26

我正在尝试将字符串解析为对象。我在下面的链接中查看了jQueryparseJSON文档我还包含了jquery库,所以我知道它不是那个。

这是我迄今为止的代码

var str = "{'val1': 1, 'val2': 2, 'val3': 3}";
var obj = jQueryparseJSON( str );
alert(obj.val1);

在Firebug中,我得到了以下错误:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

我知道这个解决方案很可能很简单,但我一直在忽视它。

示例代码中的测试字符串不是有效的JSON:

var str = '{"val1": 1, "val2": 2, "val3": 3}';
var obj = jQuery.parseJSON( str );
alert(obj.val1);

现在,如果您这样做是因为某个服务将该对象作为JSON字符串提供,那么jQuery很可能会为您完成解析步骤。如果您只是想在JavaScript代码中包含一个对象文字,那么根本没有理由涉及JSON服务:

var obj = { val1: 1, val2: 2, val3: 3 };

创建一个对象。

请注意,JSON语法比JavaScript对象文字语法更严格。JSON坚持用双引号字符引用属性名称,当然,值只能是数字、字符串、布尔值或null

您的字符串不是有效的JSON。对象键必须用双引号括起来,而不是单引号。

var str = '{"val1": 1, "val2": 2, "val3": 3}';
var obj = jQuery.parseJSON(str);
alert(obj.val1);

演示

function str2json (str, val, obj) {
var obj = str.indexOf("'") != -1 
          ? JSON.parse(str.replace(/'/g, "'"")) 
          : JSON.parse(str);
    return (val === undefined ? obj /* JSON.stringify(obj) */ : obj[val])
};
str2json("{'val1': 1, 'val2': 2, 'val3': 3}", "val1"); // `1`
str2json("{'val1': 1, 'val2': 2, 'val3': 3}") 
// `obj` : `[object Object]` ,
// `JSON.stringify(obj)` : `{"val1":1,"val2":2,"val3":3}`

jsfiddlehttp://jsfiddle.net/guest271314/n8jLG/

您的代码中有一个typo错误:

此处为var obj = jQueryparseJSON( str );

应为var obj = jQuery.parseJSON( str );