字符串应该怎么转为对象格式呢?

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))

  1. 要将这种字符串转换为对象格式,可以使用JSON.parse()方法。

  2. 但是,给定的字符串不符合标准的 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 格式才能成功转换为对象。如果字符串的格式不正确,将会抛出语法错误。

  1. 想要更简单的方法将给定的字符串转换为对象格式,可以使用eval()函数。
    请注意,使用eval()函数存在一定的安全风险,因此请确保信任字符串的来源。
    以下是一个使用eval()函数将字符串转换为对象的示例代码:
var str = '{error:1,data:"用户不存在"}';
var obj = eval('(' + str + ')');

console.log(obj);

在上述示例中,使用eval()函数将字符串str作为 JavaScript 代码进行求值。通过在字符串的两侧添加括号,确保字符串被视为对象字面量而不是代码块。

然后,将求值结果存储在obj变量中,并使用console.log()方法将转换后的对象输出到控制台。

请注意,使用eval()函数需要谨慎,并且只在信任字符串的来源并且了解其内容时使用。如果字符串中包含恶意代码,它将被执行,可能导致安全问题。因此,建议仅在必要时使用eval()函数,并尽量避免使用它。