如何将字符串转换为对象

时间:2019-08-28 18:45:32

标签: javascript arrays json

我有两个变量data和DataConvert,我想像这样转换数据 DataConvert

let data="{'one':{'id':'2'},'one':{'id':'2'}}"
let DataConvert={'one':{'id':'2'},'one':{'id':'2'}}

console.info(data)
console.info(DataConvert)

1 个答案:

答案 0 :(得分:2)

唯一可以执行此操作的内置函数是eval()

let data="{'one':{'id':'2'},'two':{'id':'2'}}";
let DataConvert;
eval(`DataConvert = ${data}`);

console.info(data)
console.info(DataConvert)

在jsfiddle中,某些字符串中包含\r\n,这不是有效的JavaScript。如果您希望将它们原样保留在结果中,则需要在调用eval()之前对其进行转义:

data = data.replace(/\r/g, '\\r').replace(/\n/g, '\\n');

但是如果您不控制字符串的来源,这将很危险,因为它将在data中执行任意表达式。

如果将引号更改为双引号,则可以使用更安全的JSON.parse()

let data='{"one":{"id":"2"},"two":{"id":"2"}}';
let DataConvert = JSON.parse(data);

console.info(data)
console.info(DataConvert)

请注意,对象键必须唯一,不能有两个名为"one"的属性。我将第二个更改为"two"以使其有效。