Добавление нового элемента массива в объект JSON
У меня есть объект формата JSON, который я читал из файла JSON, который у меня есть в переменной, называемой teamJSON, которая выглядит так:
{"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"}]}
перед записью обратно в файл. Что такое хороший способ добавить к новому элементу? Я приблизился, но все двойные кавычки были сбежаны. Я искал хороший ответ на SO, но никто не освещал этот случай. Любая помощь приветствуется.
Ответы
Ответ 1
JSON - это всего лишь обозначение; чтобы сделать изменение, которое вы хотите parse
, чтобы вы могли применить изменения к собственному объекту JavaScript, затем stringify
вернуться к 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"}]}"
Ответ 2
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"}]}"
Любой, кто хочет добавить в определенную позицию массива, попробует это:
fruits['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"}]}"
Над блоком кода добавляется элемент после второго элемента.
Ответ 3
Сначала нам нужно проанализировать объект 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
Ответ 4
Например, вот такой элемент, как кнопка для добавления элемента в корзину и соответствующие атрибуты для сохранения в 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 к массиву результат (в 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 "," образ ":" 1461449679506.jpeg"}]
после этого действия вы можете легко отправить данные на сервер в виде списка в Java
Здесь приведен полный пример кода
Как сохранить простую корзину с помощью localStorage?