将对象的字符串部分转换为对象Javascript

问题描述:

我有一个对象,它有字符串作为值,但我想将它们转换为对象将对象的字符串部分转换为对象Javascript

以下是有关对象的工作示例。

var test = { 
    val1: "[{"test":"testval","test2": "testval2"}]", 
    val2: "[{"test":"testval","test2": "testval2"}]", 
    val3: "[{"test":"testval","test2": "testval2"}]" 
} 

我试图JSON.parse(test)和...

var output; 
for(var key in test){ 
    output += JSON.parse(test[key]); 
} 

TLDR:想 “unstring” 的对象值,以使它们的(子)对象。

+1

你怎么想实现与'输出+ ='? – pwolaq

+0

所有东西都是JavaScript中的一个对象。 – Mouser

+0

这不是有效的JS:'val1:“[{”test“:”testval“,”test2“:”testval2“}]”,' - 也许你的意思是'val1:'[{“test”:“testval” ,“test2”:“testval2”}]',' – mplungjan

如何:

for(var key in test){ 
    test[key] = JSON.parse(test[key]); 
} 
+0

最快的商标,所以接受这个答案,谢谢你的答复! –

它不起作用,因为您试图解析对象而不是字符串。 JSON.parse不适用于对象,而是JSON字符串。

此外,还有一个语法错误,您使用"而不是'来指定JSON字符串。如下更改代码:

var test = { 
 
    val1: '[{"test":"testval","test2": "testval2"}]', 
 
    val2: '[{"test":"testval","test2": "testval2"}]', 
 
    val3: '[{"test":"testval","test2": "testval2"}]' 
 
} 
 

 
var output = {}; 
 
for(var key in test){ 
 
    output[key]= JSON.parse(test[key]); 
 
} 
 

 
console.log(output);

操作=+像您期望不使用对象。 在控制台中检查{a:1} + {b:2}

您应该创建空对象。然后将解析的JSON字符串设置为属性。

这将工作。

var output = {}; 
for(var key in test){ 
    output[ key ] = JSON.parse(test[key]); 
} 

这可以用一个for循环来完成。

您的“字符串”值似乎不是有效的JavaScript。请确保您以单引号或双引号开头。

var test = { 
 
    val1: '[{"test":"testval","test2":"testval2"}]', 
 
    val2: '[{"test":"testval","test2":"testval2"}]', 
 
    val3: '[{"test":"testval","test2":"testval2"}]' 
 
}; 
 

 
// Convert all values to objects. 
 
Object.keys(test).forEach(key => test[key] = JSON.parse(test[key])); 
 

 
// Print modified object. 
 
console.log(JSON.stringify(test, null, 4));
.as-console-wrapper { top:0; max-height:100% !important; }