JSON nesnesine yeni bir dizi öğesi ekleme

Bir JSON dosyasından okuduğum ve teamJSON adlı bir değişkende tuttuğum JSON biçiminde bir nesnem var, bu nesne şuna benziyor:

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

Diziye yeni bir öğe eklemek istiyorum, örneğin

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

Sonunda

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

dosyaya geri yazmadan önce. Yeni öğeye eklemenin iyi bir yolu nedir? Yaklaştım ama tüm çift tırnaklar kaçmış. SO'da iyi bir cevap aradım ama hiçbiri bu durumu tam olarak kapsamıyor. Her türlü yardım için minnettarım.

Çözüm

JSON sadece bir notasyondur; istediğiniz değişikliği yapmak için onu parse edin, böylece değişiklikleri yerel bir JavaScript Nesnesine uygulayabilir, ardından stringify tekrar JSON haline getirebilirsiniz

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"}]}"
Yorumlar (7)
var Str_txt = '{"theTeam":[{"teamId":"1","status":"pending"},{"teamId":"2","status":"member"},{"teamId":"3","status":"member"}]}';

Eğer son pozisyona eklemek istiyorsanız bunu kullanın:

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"}]}"

Eğer ilk pozisyonda eklemek istiyorsanız aşağıdaki kodu kullanın:

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"}]}"

Bir dizinin belirli bir konumuna ekleme yapmak isteyen herkes bunu dener:

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"}]}"

Yukarıdaki kod bloğu ikinci elemandan sonra bir eleman ekler.

Yorumlar (0)

Örneğin, burada sepete ürün eklemek için düğme gibi bir öğe ve localStorage'a kaydetmek için uygun nitelikler var.

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

var productArray=[];

$(document).on('click','[cartBtn]',function(e){
  e.preventDefault();
  $(this).html('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 nesnesini Array'e ekledikten sonra sonuç (LocalStorage'da):

[{"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"}]

Bu işlemden sonra verileri Java'da List olarak sunucuya kolayca gönderebilirsiniz

Tam kod örneği burada

https://stackoverflow.com/questions/23554456/how-do-i-store-a-simple-cart-using-localstorage/37169851#37169851

Yorumlar (0)