Динамическое добавление значения в корень json
Ну, я так запутался. Я сделал элемент json, как это:
var world = {"county": []};
world.county.push({name: "America", flag: "yes", countries: []});
world.county[0].countries.push({name: "Costa Rica", capital: "San Jose"});
Это наводит меня на две мысли: {[3]]}
- я смешиваю массивы с объектами json. Как я могу избежать использования массивов в этом сценарии?
- Как я могу динамически добавлять элементы в корень json?
Что касается вопроса 2, я сталкиваюсь с проблемами, потому что я не знаю, как добавить элементы в корень, скажем, что я пробовал это, но это не работает:
var index = 0;
var word = {};
world.index.push({name: WA});
Таким образом, я мог бы добавьте элементы, повторяющие некоторый массив, созданный ранее.
2 ответов:
Начнем с ответа Kolink по. Тогда за то, что вы здесь делаете:
var index = 0; var world = {}; world.index.push({name: "WA"});Похоже, что вы пытаетесь добавить свойство к
worldс индексом 0. Учитывая, что вы затем пытаетесь использовать.push(), казалось бы, вы хотите, чтобы это свойство было массивом, и в этом случае вы сделали бы это следующим образом:world[index] = []; world[index].push({name: "WA"});Учитывая, что
worldначинается как пустой объект, который создаст эту структуру:{ "0" : [ {name:"WA"} ] }В общем смысле, чтобы получить доступ к свойству объекта, где свойство находится в переменной вы используете синтаксис
[]в стиле массива. Итак:world["somePropName"] // does the same thing as world.somePropName // so with a variable: var x = "somePropName"; world[x]
Во-первых, давайте покончим с этим: это только JSON, если это строка , представляющая объект JavaScript. То, что у вас есть, - это объектный литерал.
Теперь, что касается вашего вопроса, Вы можете добавить элементы к объекту, просто используя:object.newProperty = value;Что касается вашего желания избежать массивов, просто используйте массивы. Они являются правильным типом объектов для использования, и вы не должны использовать ничего другого для этой задачи.
Comments