2017-01-03 129 views
0

我有一個對象,它有字符串作爲值,但我想將它們轉換爲對象將對象的字符串部分轉換爲對象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

回答

2

如何:

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

最快的商標,所以接受這個答案,謝謝你的答覆! –

1

它不起作用,因爲您試圖解析對象而不是字符串。 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);

2

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

您應該創建空對象。然後將解析的JSON字符串設置爲屬性。

這將工作。

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

這可以用一個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; }