2

好吧,我很困惑。我做了一个这样的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 根?

关于问题2,我遇到了问题,因为我不知道如何将元素添加到根目录,假设我已经尝试过了,但它不起作用:

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

所以,通过这种方式,我可以添加元素迭代之前创建的一些数组。

4

2 回答 2

5

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

现在,至于您的问题,您可以简单地使用以下方法向对象添加元素:

object.newProperty = value;

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

于 2012-07-09T04:24:01.220 回答
0

从 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]
于 2012-07-09T04:35:20.447 回答