使用JavaScript为JSON对象添加新的属性(元素)

如何使用JavaScript将新的属性(元素)添加到JSON对象?

JSON代表JavaScript Object Notation。 JSON对象实际上是一个string,它尚未被转换成它所表示的对象。

要将属性添加到JS中的现有对象,您可以执行以下操作。

object["property"] = value; 

要么

 object.property = value; 

如果你提供一些额外的信息,像你需要在上下文中做什么,你可能会得到一个更加定制的答案。

 var jsonObj = { members: { host: "hostName", viewers: { user1: "value1", user2: "value2", user3: "value3" } } } var i; for(i=4; i<=8; i++){ var newUser = "user" + i; var newValue = "value" + i; jsonObj.members.viewers[newUser] = newValue ; } console.log(jsonObj); 

一个JSON对象只是一个JavaScript对象,所以用JavaScript作为基于原型的语言,你所要做的就是使用点符号来解决它。

 mything.NewField = 'foo'; 

嗨,感谢这个职位。 我想添加一些有用的东西。

对于IE来说,最好使用object["property"] = value; 语法,因为在IE中的一些特殊的词可以给你一个错误。 一个例子: object.class = 'value'; 这在IE中失败了,因为“class”是一个特殊的词。 我花了几个小时这个…………….!

 extend: function(){ if(arguments.length === 0){ return; } var x = arguments.length === 1 ? this : arguments[0]; var y; for(var i = 1, len = arguments.length; i < len; i++) { y = arguments[i]; for(var key in y){ if(!(y[key] instanceof Function)){ x[key] = y[key]; } } }; return x; } 

扩展多个json对象(忽略函数):

 extend({obj: 'hej'}, {obj2: 'helo'}, {obj3: {objinside: 'yes'}}); 

将导致一个单一的json对象

您还可以使用扩展函数将新的json对象添加到您的json中,

 var newJson = $.extend({}, {my:"json"}, {other:"json"}); // result -> {my: "json", other: "json"} 

recursion合并是扩展函数的一个很好的select。 只需添加真值作为第一个参数(阅读文档以获取更多选项)。 例,

 var newJson = $.extend(true, {}, { my:"json", nestedJson: {a1:1, a2:2} }, { other:"json", nestedJson: {b1:1, b2:2} }); // result -> {my: "json", other: "json", nestedJson: {a1:1, a2:2, b1:1, b2:2}} 

您也可以使用ECMAScript 2015 Object.assign 。 它还允许您一次添加嵌套的属性。 例如:

 const myObject = {}; Object.assign(myObject, { firstNewAttribute: { nestedAttribute: 'woohoo!' } }); 

Ps:这不会覆盖已分配属性的现有对象。 相反,他们将被添加。 但是,如果您将值分配给现有的属性,则会被覆盖。

使用jQuery的$ .extend(),如下所示:

 token = {_token:window.Laravel.csrfToken}; data = {v1:'asdass',v2:'sdfsdf'} dat = $.extend(token,data); 

我希望你为他们服务。

 for(var i=0;i<JsonObject.length;i++){ alert("inside forloop"); var dataArray = JsonObject[i]; alert(dataArray["data"]); }