Добавление нового элемента массива в объект 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, но никто не совсем покрывает этот случай. Любая помощь оцененный.

4 86

4 ответа:

JSON это просто обозначение; чтобы сделать изменения, которые вы хотите parse это так, вы можете применить изменения к родной JavaScript Object, потом 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"}]}"
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"}]}"

над блоком кода добавить элемент после второго элемента.

Сначала нам нужно разобрать объект 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.преобразовать в строки the obj назад к json

например вот элемент как кнопка для добавления элемента в корзину и соответствующие атрибуты для сохранения в 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"},{"идентификатор":"93","nameEn":"ФИО2-продукт","цена":"76","изображения":"1461449637106.jpeg"}, {"id": "94", "nameEn": "Product Name3","price":"87","image": "1461449679506.jpeg"}]

после этого действия вы можете легко отправить данные на сервер в виде списка в Java

полный пример кода здесь

как хранить простую корзину с помощью localStorage?