使用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"]); }