var str = '{error:1,data:"用户不存在"}'; 这种字符串应该怎么转为对象格式呢?
对于标准字符串就是
JSON.parse(str)
对于非标准字符串可以使用Function或eval
//eval
var obj = eval("("+str+")");//需要加一个小括号
//Function
var obj = Function('return ' + str)();
JSON.parse(str)
JSON.parse(JSON.stringify(str))
要将这种字符串转换为对象格式,可以使用JSON.parse()方法。
但是,给定的字符串不符合标准的 JSON 格式,因为属性名没有使用双引号括起来。为了将其正确解析为对象,需要先对字符串进行修正,然后再使用JSON.parse()方法进行转换。
以下是一个示例代码:
var str = '{error:1,data:"用户不存在"}';
var fixedStr = str.replace(/(['"])?([a-zA-Z0-9_]+)(['"])?:/g, '"$2": ');
var obj = JSON.parse(fixedStr);
console.log(obj);
在上述示例中,首先定义了给定的字符串str。然后,使用正则表达式和replace()方法将属性名修正为双引号括起来的形式,将其存储在fixedStr变量中。
接下来,使用JSON.parse()方法将修正后的字符串fixedStr转换为对象,并将其存储在obj变量中。
最后,使用console.log()方法将转换后的对象输出到控制台,以便可以查看结果。
请注意,修正后的字符串必须符合标准的 JSON 格式才能成功转换为对象。如果字符串的格式不正确,将会抛出语法错误。
var str = '{error:1,data:"用户不存在"}';
var obj = eval('(' + str + ')');
console.log(obj);
在上述示例中,使用eval()函数将字符串str作为 JavaScript 代码进行求值。通过在字符串的两侧添加括号,确保字符串被视为对象字面量而不是代码块。
然后,将求值结果存储在obj变量中,并使用console.log()方法将转换后的对象输出到控制台。
请注意,使用eval()函数需要谨慎,并且只在信任字符串的来源并且了解其内容时使用。如果字符串中包含恶意代码,它将被执行,可能导致安全问题。因此,建议仅在必要时使用eval()函数,并尽量避免使用它。