একটি JSON অবজেক্টে একটি নতুন অ্যারের উপাদান যুক্ত করা হচ্ছে


120

আমার কাছে একটি জেএসওএন ফর্ম্যাট অবজেক্ট রয়েছে আমি জেএসওএন ফাইল থেকে পড়েছি যা আমার কাছে টিম জেএসওএন নামক একটি ভেরিয়েবলে রয়েছে, এটি দেখতে দেখতে:

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

ফাইল ফিরে লিখার আগে। নতুন উপাদান যুক্ত করার একটি ভাল উপায় কি? আমি কাছে গিয়েছিলাম তবে সমস্ত ডাবল উদ্ধৃতি এড়িয়ে গেল। আমি এসও-তে একটি ভাল উত্তর চেয়েছি কিন্তু কোনওটিই এই মামলার পুরোপুরি আবরণ করে না। কোন সাহায্য প্রশংসা করা হয়।


6
yourObj.theTeam.push({"teamId":"4","status":"pending"});
পিএসএল

2
"জেএসএন" কোনও জিনিস নয় - এটি একটি স্বরলিপি।
ব্র্যাড ক্রিস্টি

1
আপনি যখন ফাইলটি থেকে JSON অবজেক্টটি পড়েন, তখন কি এটি JSON বা একটি স্ট্রিং হিসাবে ব্যাখ্যা করা হচ্ছে? যদি এটির স্ট্রিংটি প্রথমে আপনাকে JSON হিসাবে স্ট্রিংটি বিশ্লেষণের প্রয়োজন হয় তবে অন্য মন্তব্য এবং উত্তর যা বলছে তা আপনি করতে পারেন।
চিহ্নিত করুন

3
@ চার্লস আপনার শিরোনাম পড়ে এবং তারপরে আপনার মন্তব্যটি পুনরায় পরীক্ষা করে।
ব্র্যাড ক্রিস্টি

1
@ চার্লসওয়াইক-স্মিথ আপনার teamJSONপরিবর্তনশীল কোন ধরণের ? এটি কি জেএসএন স্ট্রিং, অর্থাত্ '{"theTeam":[...]}'বা কোনও আসল বস্তু আক্ষরিক? ইঙ্গিত: ব্যবহারconsole.log(typeof teamJSON)
ফিল

উত্তর:


233

জেএসওএন কেবল একটি স্বরলিপি ; আপনি যে পরিবর্তনটি চান parseতা করতে যাতে আপনি পরিবর্তনগুলি একটি স্থানীয় জাভাস্ক্রিপ্ট অবজেক্টে প্রয়োগ করতে পারেন , তারপরে JSON এstringify ফিরে যান

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

16
এটি নির্দেশ করার জন্য +1 এটিকে হস্তক্ষেপ করার আগে কোনও বস্তুর মধ্যে পার্স করা দরকার।
ব্র্যাড ক্রিস্টি

3
তিনি বলেছিলেন যে ইতিমধ্যে নামের একটি ভেরিয়েবলটিতে তার অবজেক্ট রয়েছে teamJSON। বিন্দুতে একটি স্ট্রিং উল্লেখ করা হয়নি
ফিল

6
@ ফিল: এটি যদি জেএসওএন হয় তবে এটি একটি স্ট্রিং। যদি এটি না হয় তবে এটি জেএসওএন নয়।
ব্যবহারকারী2736012

1
পালানো উদ্ধৃতিগুলি আসলে আমাকে বিস্মিত করে তোলে যে জেএসএন দুটিবার এনকোড করা হয়েছিল কিনা।
ব্যবহারকারী2736012

24
পল, এটি একটি খুব গঠনমূলক উত্তর। এটি মূল পোস্টারটি বেল্টিং না করে সমস্যার বিবৃতিতে ঘাটতি সমাধান করে। এটি জাভাস্ক্রিপ্ট অবজেক্টগুলিতে অপারেটিং এবং objects অবজেক্টগুলির JSON টেক্সট উপস্থাপনের মধ্যে সীমানা আরও স্পষ্টভাবে বর্ণনা করে। আমি মনে করি এটি বুঝতে অপরিহার্য যে একবার JSON পার্স করা হয়ে গেলে, আমরা খাঁটি জাভাস্ক্রিপ্ট অবজেক্টগুলিতে পরিচালনা করছি - তারা মূলত জেএসএন থেকে এসেছিল তা অপ্রাসঙ্গিক। যাইহোক, সমস্ত উত্তেজনাপূর্ণ মন্তব্যের পরে আপনার উত্তরটি পড়া টাটকা বাতাসের শ্বাস ছিল OP
ল্যারি হেক্টর

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

উপরে কোড ব্লক দ্বিতীয় উপাদানটির পরে একটি উপাদান যুক্ত করে।


1

প্রথমে আমাদের 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 obj তাদেরকে JSON ফিরে


যদি আমাদের জেএসওনের টিমের মতো কোনও নাম না থাকে তবে এর পরিবর্তে কেবলমাত্র উপাদানগুলির দলযুক্ত ও স্ট্যাটাস সহ নোড থাকে? সুতরাং আমার মতো দেখতে হবে: var str = '[{"TeamId": "1", "স্থিতি": "মুলতুবি"}, team "TeamId": "2", "স্থিতি": "সদস্য"}, team "টিম আইডি ":" 3 "," অবস্থা ":" সদস্য "}] ';
শফিক

0

উদাহরণস্বরূপ এখানে বাস্কেটে আইটেম যুক্ত করার জন্য বোতামের মতো উপাদান রয়েছে এবং লোকালস্টোরারেজে সংরক্ষণের জন্য উপযুক্ত বৈশিষ্ট্য রয়েছে।

'<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);
}

অ্যারেতে জেএসএন অবজেক্ট যুক্ত করার পরে ফলাফলটি (লোকালস্টোরেশনে):

[{"আইডি": "99", "নামইন": "পণ্যের নাম 1", "দাম": "767", "চিত্র": "1462012597217.jpeg"}, id "আইডি": "93", "নামইন" : "পণ্যের নাম 2", "দাম": "76", "চিত্র": "1461449637106.jpeg"}, id "আইডি": "94", "নামইন": "পণ্যের নাম 3", "দাম": "87" , "ইমেজ": "1461449679506.jpeg"}]

এই ক্রিয়াটির পরে আপনি জাভায় তালিকা হিসাবে সার্ভারে সহজেই ডেটা প্রেরণ করতে পারেন

সম্পূর্ণ কোড উদাহরণ এখানে

লোকালস্টোরেশন ব্যবহার করে আমি কীভাবে একটি সাধারণ কার্ট সংরক্ষণ করব?


0

আমার ক্ষেত্রে, আমার JSON অবজেক্টে এটিতে বিদ্যমান অ্যারে নেই, তাই আমাকে প্রথমে অ্যারে উপাদান তৈরি করতে হয়েছিল এবং তারপরে উপাদানটিকে পুশ করতে হয়েছিল।

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

(এই উত্তরটি এই বিশেষ প্রশ্নের সাথে প্রাসঙ্গিক নাও হতে পারে তবে অন্য কারও পক্ষে সহায়তা করতে পারে)


0

ধরুন আমাদের ইতিমধ্যে ভেরিয়েবলের ডেটা রয়েছে alreadyData;

var alreadyData=[{"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"}];

var fields = []; //new array
var json = JSON.parse(alreadyData); //just parse in one variable
var json = JSON.parse(tableColumns);
for (var i = 0; i < json.length; i++) {
    fields.push(json[i]);//push data in fields
} 
fields.push({ 'id':33, 'nameEn': 'Singh', 'price': '222','image': '1462012597217.jpeg' }); // its new data
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.