2013-01-11 11 views
10

Questo è l'oggetto JSON Sto lavorando conAggiunta di una coppia di valori chiave per un oggetto 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 
     } 
    ] 
} 

Voglio che questo come un altro coppia chiave-valore:

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

ho provato concat ma questo mi ha dato il risultato con || simbolo e I cdnt iterate. Ho usato versato ma questo rimuove solo le virgole.

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

Come si aggiunge un valore di coppia di chiavi a un oggetto JSON esistente? Sto lavorando in javascript.

+0

@Aaush, fa 'json1' contengono l'oggetto descritto nel primo esempio di codice? –

+0

@JonathanM Sì, contiene l'oggetto descritto nel primo codice – Aayush

risposta

11

Questo è il modo più semplice e funziona per me.

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

È possibile semplificare le ultime due righe semplicemente: 'testJson.collegeId = {" eventno ":" 6062 "," eventdesc ":" abc "};' –

+0

sì, questo è in realtà il modo migliore e più semplificato :) –

3

è necessario effettuare un oggetto al di riferimento "collegeId", e quindi per tale oggetto, fanno due coppie più chiavi di valori non in questo modo:

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

Supponendo che concattedjson è il tuo oggetto JSON. Se si dispone solo di una rappresentazione di stringa, sarà necessario effettuare il parse prima di estenderlo.

Modifica

demo per chi pensa questo non funzionerà.

+0

Se il 'concattedjson' è lo stesso degli OP, questo non funzionerà. La sua è una stringa. –

+0

@ JonathanM - Forse dovresti leggere il link che ho postato per te. È un oggetto JSON e sì, esiste. –

+0

Ricevo quello che dici nel commento sulla mia risposta, e ho chiarito. La tua risposta qui ancora non funzionerà sulla sua stringa JSON * *. –

3

Basta convertire la stringa JSON in un oggetto utilizzando JSON.parse() e quindi aggiungere la proprietà. Se ne hai bisogno di nuovo in una stringa, fare JSON.stringify().

BTW, non esiste un oggetto JSON. Ci sono oggetti e ci sono stringhe JSON che rappresentano quegli oggetti.

+0

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

+0

L'OP non ha chiesto come convertire una stringa in un oggetto, hanno chiesto come estendere l'oggetto. Forse dovresti modificare la tua risposta. –

+1

@Travis, sì, ci * sono * oggetti JSON, ma non come l'OP sta pensando a loro. Gli oggetti JSON sono oggetti creati dalla libreria JSON per avere proprietà come '.parse()' e '.stringify()'. –

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

Questo è una risposta solo in codice. In generale, aggiungendo qualche descrizione che spiega cosa fa il codice e come funziona sarebbe meglio. Puoi per favore [modificare] la tua risposta e aggiungere qualche commento? Grazie! –

Problemi correlati