向 JSON 对象添加新的数组元素

我从一个 JSON 文件中读取了一个 JSON 格式的对象,该对象位于一个名为 team JSON 的变量中,看起来像这样:

 {"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}

我想向数组中添加一个新项,如

{"teamId":"4","status":"pending"}

最后的结局

{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}

在写回文件之前。添加新元素的好方法是什么?我接近了,但是所有的双引号都被漏掉了。我一直在寻找一个很好的答案,但是没有一个能够完全覆盖这个案例。感谢你的帮助。

642326 次浏览

JSON 只是一个 注释; 要进行所需的更改,可以将更改应用于本机 JavaScript 对象,然后将 stringify应用于 < em > JSON

var jsonStr = '{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';


var obj = JSON.parse(jsonStr);
obj['theTeam'].push({"teamId":"4","status":"pending"});
jsonStr = JSON.stringify(obj);
// "{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}"
var Str_txt = '{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';

如果你想要 加最后一个位置,那么使用以下方法:

var parse_obj = JSON.parse(Str_txt);
parse_obj['theTeam'].push({"teamId":"4","status":"pending"});
Str_txt = JSON.stringify(parse_obj);
Output //"{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"},{"teamId":"4","status":"pending"}]}"

如果你想要 在第一个位置加,那么使用以下代码:

var parse_obj = JSON.parse(Str_txt);
parse_obj['theTeam'].unshift({"teamId":"4","status":"pending"});
Str_txt = JSON.stringify(parse_obj);
Output //"{"theTeam":[{"teamId":"4","status":"pending"},{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}"

任何想要数组 在某一位置加的人都可以尝试这样做:

parse_obj['theTeam'].splice(2, 0, {"teamId":"4","status":"pending"});
Output //"{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"4","status":"pending"},{"teamId":"3","status":"member"}]}"

上面的代码块在第二个元素之后添加了一个元素。

例如,这里有一个类似元素的按钮,用于将 item 添加到购物篮,以及适当的属性,用于保存在 localStorage 中。

'<a href="#" cartBtn pr_id='+e.id+' pr_name_en="'+e.nameEn+'" pr_price="'+e.price+'" pr_image="'+e.image+'" class="btn btn-primary"><i class="fa fa-shopping-cart"></i>Add to cart</a>'

var productArray=[];




$(document).on('click','[cartBtn]',function(e){
e.preventDefault();
$(this).html('<i class="fa fa-check"></i>Added to cart');
console.log('Item added ');
var productJSON={"id":$(this).attr('pr_id'), "nameEn":$(this).attr('pr_name_en'), "price":$(this).attr('pr_price'), "image":$(this).attr('pr_image')};




if(localStorage.getObj('product')!==null){
productArray=localStorage.getObj('product');
productArray.push(productJSON);
localStorage.setObj('product', productArray);
}
else{
productArray.push(productJSON);
localStorage.setObj('product', productArray);
}




});


Storage.prototype.setObj = function(key, value) {
this.setItem(key, JSON.stringify(value));
}


Storage.prototype.getObj = function(key) {
var value = this.getItem(key);
return value && JSON.parse(value);
}

将 JSON 对象添加到 Array result 之后(在 LocalStorage 中) :

[{“ id”: “99”,“ nameEn”: “ Product Name1”,“ price”: “767”,“ image”: “1462012597217.jpeg”} ,{“ id”: “93”,“ nameEn”: “ Product Name2”,“ price”: “76”,“ image”: “1461449637106.jpeg”} ,{“ id”: “94”,“ nameEn”: “ Product Name3”,“ price”: “87”,“ image”: “1461449679506.jpeg”}]

在此操作之后,您可以轻松地将数据以 Java 中的 List 形式发送到服务器

完整的代码示例在这里

如何使用 localStorage 存储简单的购物车?

首先,我们需要解析 JSON 对象,然后我们可以添加一个条目。

var str = '{"theTeam":[{"teamId":"1","status":"pending"},
{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';


var obj = JSON.parse(str);
obj['theTeam'].push({"teamId":"4","status":"pending"});
str = JSON.stringify(obj);

最后,我们将 JSON.stringify对不起返回到 JSON

在我的例子中,我的 JSON 对象中没有任何已有的 Array,所以我必须首先创建数组元素,然后推送该元素。

  elementToPush = [1, 2, 3]
if (!obj.arr) this.$set(obj, "arr", [])
obj.arr.push(elementToPush)

(这个答案可能与这个问题无关,但可能有帮助 别人)