Добавить в JSON, не зная его структуры - PullRequest
0 голосов
/ 27 августа 2010

Например, допустим, у меня есть объект JSON, содержащий штаты и города. вот так

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

Теперь допустим, что наш скрипт добавляет состояние, выполнив obj.states.push(stateVar)

Как мы можем добавить города к этому недавно созданному государству? Я пробовал такие вещи, как obj.states[1].push(cityVar) или obj.states[1].cities.push();, но это дает это не ошибка функции.

Ответы [ 2 ]

2 голосов
/ 27 августа 2010

Пахнет, как будто ваша структура немного не в себе.Вы, вероятно, хотите что-то вроде этого:

var obj = { states : {'state1' : {cities : ['city', 'another']} } }
obj.states[newState] = {cities : ['even', 'more', 'cities']}
obj.states[newState].cities.push('again')
1 голос
/ 27 августа 2010

Вы можете изменить states как объект как предложенный ответ или изменить его на эту форму -

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

Подумайте об этом, согласно вашей структуре, если у вас есть только объект состояния, вы не можете получить доступ к его городам, если не знаете названия штата! (Это возможно, но становится ужасно)

Это зависит от вашего варианта использования: хотите ли вы Object или Array. Объект хорош для быстрого поиска по ключам, тогда как массивы хороши для перечисления, и они поддерживают порядок. (Объекты поддерживают порядок в большинстве реализаций, но это не соответствует спецификации и, следовательно, не гарантируется.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...