为json根动态添加值

Add value to json root dynamically

本文关键字:添加 动态 json      更新时间:2023-09-26

嗯,我很困惑。我制作了一个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});

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

首先,让我们解决这个问题:只有当它是表示JavaScript对象的字符串时,它才是JSON。您所拥有的是一个对象文字

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

object.newProperty = value;

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

从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]