Динамическое добавление значения в корень 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]]}


  1. я смешиваю массивы с объектами json. Как я могу избежать использования массивов в этом сценарии?

  2. Как я могу динамически добавлять элементы в корень json?


Что касается вопроса 2, я сталкиваюсь с проблемами, потому что я не знаю, как добавить элементы в корень, скажем, что я пробовал это, но это не работает:



var index = 0;
var word = {};
world.index.push({name: WA});


Таким образом, я мог бы добавьте элементы, повторяющие некоторый массив, созданный ранее.

466   2  

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

    Ничего не найдено.