2010-08-26 4 views
0

Par exemple, disons que j'ai un objet JSON qui contient des états et des villes. comme siAjouter à JSON sans connaître sa structure

var obj = { states : [ {'state1' : {cities : ['city', 'another']} } ] }

Maintenant, supposons que notre script ajoute un état en faisant obj.states.push(stateVar)

Comment pouvons-nous ajouter des villes à cet état nouvellement créé? J'ai essayé des choses comme obj.states[1].push(cityVar) ou obj.states[1].cities.push(); mais cela donne une ceci n'est pas une erreur de fonction.

+1

Pourquoi 'states' est-il un tableau au lieu d'un objet? –

+0

b/c qui permet d'ajouter de nombreux états. – Mike

+0

ok vous pouvez probablement dire que je suis nouveau à json. donc vous recommande de le faire var obj = { états: { 'state1': { villes: [ 'ville', 'autre']}} } Mais maintenant, comment pouvons-nous ajouter états? – Mike

Répondre

2

Ça sent comme si votre structure est un peu hors tension. Vous voulez probablement quelque chose comme ceci:

var obj = { states : {'state1' : {cities : ['city', 'another']} } } 
obj.states[newState] = {cities : ['even', 'more', 'cities']} 
obj.states[newState].cities.push('again') 
1

Vous pouvez soit changer states comme un objet comme this answer suggéré ou vous pouvez changer à ce formulaire -

var obj = {states : [ 
    { name: 'state1', cities : [ 'city1', 'city2'] }, 
    { name: 'state2', cities : [ 'city1', 'city2'] } 
]} 

Pensez-y, selon votre structure Si vous n'avez qu'un objet d'état, vous ne pouvez pas accéder à ses villes sans connaître le nom de l'état! (C'est possible, mais ça devient moche)

Cela dépend de votre cas d'utilisation si vous voulez un objet ou un tableau. L'objet est bon pour les recherches rapides par les clés alors que les tableaux sont bons pour le dénombrement et ils maintiennent l'ordre. (Les objets maintiennent également l'ordre dans la plupart des implémentations, mais ils ne sont pas dans les spécifications et ne sont donc pas garantis.)

Questions connexes