2013-01-11 122 views
10

這是JSON對象我與追加一個鍵值對,JSON對象

{ 
    "name": "John Smith", 
    "age": 32, 
    "employed": true, 
    "address": { 
     "street": "701 First Ave.", 
     "city": "Sunnyvale, CA 95125", 
     "country": "United States" 
    }, 
    "children": [ 
     { 
      "name": "Richard", 
      "age": 7 
     }, 
     { 
      "name": "Susan", 
      "age": 4 
     }, 
     { 
      "name": "James", 
      "age": 3 
     } 
    ] 
} 

工作,我想這是另一個關鍵 - 值對:

"collegeId": { 
         "eventno": "6062", 
         "eventdesc": "abc" 
              }; 

我想CONCAT但是這給了我||的結果符號和我cdnt迭代。我使用溢出,但只刪除逗號。

concattedjson = JSON.stringify(JSON.parse(json1).concat(JSON.parse(json2))); 

如何將密鑰對值添加到現有的json對象? 我使用javascript。

+0

@Aaush,確實'json1'包含在第一碼示例中描述的對象? –

+0

@JonathanM是它包含在第一個代碼 – Aayush

回答

11

這是最簡單的方法,它對我有用。

var testJson = { 
     "name": "John Smith", 
     "age": 32, 
     "employed": true, 
     "address": { 
      "street": "701 First Ave.", 
      "city": "Sunnyvale, CA 95125", 
      "country": "United States" 
     }, 
     "children": [ 
      { 
       "name": "Richard", 
       "age": 7 
      }, 
      { 
       "name": "Susan", 
       "age": 4 
      }, 
      { 
       "name": "James", 
       "age": 3 
      } 
     ] 
    }; 
    testJson.collegeId = {"eventno": "6062","eventdesc": "abc"}; 
+0

你可以簡化後兩行:'testJson.collegeId = {「eventno」:「6062」,「eventdesc」:「abc」};' –

+0

是的,這實際上是最好和最簡單的方法:) –

3

你需要讓一個對象在參考「collegeId」,然後爲對象,使兩個鍵值對存在這樣的:

var concattedjson = JSON.parse(json1); 
concattedjson["collegeId"] = {}; 
concattedjson["collegeId"]["eventno"] = "6062"; 
concattedjson["collegeId"]["eventdesc"] = "abc"; 

假設concattedjson是你的JSON對象。如果你只有一個字符串表示,你需要在擴展它之前首先使用parse

編輯

demo對於那些誰認爲這是不行的。

+0

中描述的對象如果'concattedjson'與OP相同,這將不起作用。他是一個字符串。 –

+0

@JonathanM - 也許你應該閱讀我爲你發佈的鏈接。它是一個JSON對象,是的,它們確實存在。 –

+0

我在評論我的答案時得到了你所說的,我澄清了。你的答案在他的JSON *字符串*中仍然不起作用。 –

3

只需使用JSON.parse()將JSON字符串轉換爲對象,然後添加屬性。如果您需要將其重新寫入字符串,請執行JSON.stringify()

順便說一句,沒有這樣的東西作爲JSON對象。有對象,並且有表示這些對象的JSON字符串。

+0

http://www.json.org/javadoc/org/json/JSONObject。html –

+0

OP沒有詢問如何將字符串轉換爲對象,他們詢問如何擴展對象。也許你應該編輯你的答案。 –

+1

@Travis,是的,那裏有* JSON對象,但不像OP正在考慮它們。 JSON對象是由JSON庫創建的對象,以便具有像'.parse()'和'.stringify()'這樣的屬性。 –

0
const newTestJson = JSON.parse(JSON.stringify(testJson)); 
newTestJson.collegeId = {"eventno": "6062","eventdesc": "abc"}; 
testJson = newTestJson; 
+0

這是一個只有代碼的答案。一般來說,添加一些說明來解釋代碼的作用和工作原理會更好。你可以請[編輯]你的答案並添加一些評論?謝謝! –