将对象的字符串部分转换为对象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” 的对象值,以使它们的(子)对象。
答
如何:
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; }
你怎么想实现与'输出+ ='? – pwolaq
所有东西都是JavaScript中的一个对象。 – Mouser
这不是有效的JS:'val1:“[{”test“:”testval“,”test2“:”testval2“}]”,' - 也许你的意思是'val1:'[{“test”:“testval” ,“test2”:“testval2”}]',' – mplungjan