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