2016-09-29 52 views
2

我有一個JSON 我想添加密鑰值對(取景以下格式後)等如何幀JSON對象動態地動態鍵和值的串

var json = {}; 
var a = '"key1" : "value1"'; //coming as dynamic 
var b = '"key2" : "value2"'; // coming as dynamic 
json.push(a); // i know it is wrong. 
json.push(b); // i know it is wrong. 
console.log(json); // {"key1": "value1", "key2": "value2"} expected 

var array = []; 
var c = '{"key1": "value1"}'; 
var d = '{"key2": "value2"}'; 
array.push(c); 
array.push(d); 
console.log(array); // ["{"key1": "value1"}", "{"key2": "value2"}"] 

像上面我可以將物品推到陣列,但我怎樣才能將json字符串直接推送到json對象。

+1

試試這個'array [「key1」] =「value」' –

+0

你會得到var a ='「key1」:「value1」';動態地作爲字符串? –

+0

@SSH JS –

回答

4

先澄清一下;沒有像'JSON對象'那樣的東西。有一個JSON格式的字符串,並且有一個對象。他們是兩個獨立的實體。

要將字符串添加到對象,請指定對象的屬性並設置其值。您不需要push(),因爲它專門用於數組。在你的情況下,它應該是這樣的:

var obj = {}; 
obj.key1 = "value1"; 
obj.key2 = "value2"; 
console.log(obj); // = { "key1": "value1", "key2": "value2" } 

設置關鍵動態使用括號標記:

var key = 'foo'; 
obj[key] = 'bar'; 
console.log(obj); // = { 'foo': 'bar' } 

如果需要,然後將對象轉換爲一個JSON字符串,請撥打JSON.stringify上object:

var json = JSON.stringify(obj); 

另請注意,在你的第二個例子中,你會得到一個字符串數組,而不是一個對象數組。如果你想對象的數組,你需要在你身邊設置的值刪除引號,像這樣:

var array = []; 
var c = { "key1": "value1" }; 
var d = { "key2": "value2" }; 
array.push(c); 
array.push(d); 
console.log(array); // [{ "key1": "value1" }, { "key2": "value2" }] 

注意在對象引號的位置,並從控制檯結果的差異。

+0

var obj = {}; obj.key1 =「value1」; obj.key2 =「value2」; console.log(obj); // = {「key1」:「value1」,「key2」:「value2」} key1和key2值是動態傳遞的,在循環中我試圖獲取值並設置爲鍵。不幸的是,它並沒有採取動態的價值,而是採用了引用變量本身,因爲它最終導致了json輸出中的一個值。 (var i = 0; i <3; i ++){ var 0 ='key'+ i; \t obj.a =「value」+1; } console.log(obj); // =對象{a:「value1」} –

+0

對於動態鍵您的答案是不夠的。你可以擦亮它,如果可能的話。 @Rory –

+0

使用括號表示法。我爲你增加了一個例子 –