动态地向json root添加值

时间:2012-07-09 04:17:42

标签: javascript json

嗯,我很困惑。我做了一个像这样的json元素:

var world = {"county": []};
world.county.push({name: "America", flag: "yes", countries: []});
world.county[0].countries.push({name: "Costa Rica", capital: "San Jose"});

这让我想到两件事:

  1. 我正在使用json对象混合数组。如何在这种情况下避免使用数组?
  2. 如何动态地向json根添加元素?
  3. 关于问题2,我面临的问题是因为我不知道如何向根添加元素,让我们说我尝试了这个,但它不起作用:

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

    因此,通过这种方式,我可以添加迭代先前创建的数组的元素。

2 个答案:

答案 0 :(得分:5)

首先,让我们解决这个问题:如果它是表示JavaScript对象的字符串,那么它只是JSON。你有一个对象文字

现在,关于您的问题,您只需使用以下命令即可向对象添加元素:

object.newProperty = value;

至于你想要避免数组,只需使用数组。它们是正确使用的对象类型,您不应该使用其他任何东西来完成该任务。

答案 1 :(得分:0)

从Kolink的回答开始。那么,你在这里做的是什么:

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

看起来您正在尝试向索引为0的world添加属性。鉴于您正在尝试使用.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]