জাভাস্ক্রিপ্ট ব্যবহার করে JSON অবজেক্টে নতুন বৈশিষ্ট্য (উপাদান) যুক্ত করুন


439

আমি জাভাস্ক্রিপ্ট ব্যবহার করে কীভাবে JSON অবজেক্টে নতুন বৈশিষ্ট্য (উপাদান) যুক্ত করব?

উত্তর:


628

JSON এর অর্থ জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন। একটি JSON অবজেক্ট আসলেই এমন একটি স্ট্রিং যা এখনও প্রতিনিধিত্ব করে এমন বস্তুতে রূপান্তরিত হতে পারে।

জেএসের একটি বিদ্যমান অবজেক্টে একটি সম্পত্তি যুক্ত করতে আপনি নিম্নলিখিতটি করতে পারেন।

object["property"] = value;

অথবা

object.property = value;

আপনি যদি কিছু অতিরিক্ত তথ্য সরবরাহ করেন তবে যেমন প্রসঙ্গে আপনি যা করতে হবে ঠিক তেমন উত্তর আপনি পেতে পারেন।


6
@ শানেহোবান এখানে জেএসএন a, a.sঠিক যেমন আপনার দ্বারা সংজ্ঞায়িত করা হয়েছে একটি স্ট্রিং। এখন আপনি ["subproperty"]একটি স্ট্রিং যোগ করার চেষ্টা করছেন । আপনি বুঝতে পেরেছেন কেন ত্রুটিটি পেয়েছেন?
শিবাম

1
নতুনদের জন্য, মনে রাখবেন যে কুইন্টিন বলেছেন, একটি JSON "অবজেক্ট" কোনও জিনিস নয়, এটি কেবল একটি স্ট্রিং। আপনার উদাহরণটি JSON.parse () এর সাথে ব্যবহার করার আগে আপনাকে এটি একটি আসল জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করতে হবেobject["property"] = value;
স্পেসনিঞ্জা

2
@ শানেহোবান উপরে আমার উত্তরটি পরীক্ষা করে দেখুন এবং আপনি কীভাবে একবারে একাধিক বৈশিষ্ট্য যুক্ত করতে পারবেন তা দেখতে পাবেন।
ভিক্টর আগস্টো

1
@ এডুয়ার্ডো লুসিও কারণ এটি আপনার ব্যবহার করা উচিত JSON.stringify
সলোমন উকো

1
@ এডুয়ার্ডো লুসিও বিষয়টি হ'ল console.logসিরিয়ালাইজেশনের উদ্দেশ্যে নয়। ব্যবহার console.log(JSON. stringify(object))
সলোমন উকো

182
var jsonObj = {
    members: 
           {
            host: "hostName",
            viewers: 
            {
                user1: "value1",
                user2: "value2",
                user3: "value3"
            }
        }
}

var i;

for(i=4; i<=8; i++){
    var newUser = "user" + i;
    var newValue = "value" + i;
    jsonObj.members.viewers[newUser] = newValue ;

}

console.log(jsonObj);

6
আমি যা খুঁজছিলাম ঠিক
সেভাবে

4
দুর্দান্ত উদাহরণ .এটি আমাকে সাহায্য করে।
রিকি

152

একটি JSON অবজেক্ট হ'ল একটি জাভাস্ক্রিপ্ট অবজেক্ট, সুতরাং জাভাস্ক্রিপ্ট একটি প্রোটোটাইপ ভিত্তিক ভাষা হ'ল আপনাকে যা করতে হবে তা ডট নোটেশন ব্যবহার করে এটিকে সম্বোধন করতে হবে।

mything.NewField = 'foo';

এটাই, আমি জাভাস্ক্রিপ্টের প্রোটোপকে ভালোবাসি!
ক্যাগলারার

70

এই পোস্টের জন্য ধন্যবাদ। আমি এমন কিছু যুক্ত করতে চাই যা দরকারী হতে পারে।

আই আই এর জন্য এটি ব্যবহার করা ভাল

object["property"] = value;

সিনট্যাক্স কারণ আইই এর কয়েকটি বিশেষ শব্দ আপনাকে ত্রুটি দিতে পারে।

একটি উদাহরণ:

object.class = 'value';

এটি আইয়ে ব্যর্থ হয়, কারণ " শ্রেণি " একটি বিশেষ শব্দ। আমি এই কয়েক ঘন্টা ব্যয়।


@ সুনিল গারগ আপনি কীভাবে এই অমূল্যের কোনও পিতামাতার কাছে সন্তানেরূপে এই মূল্য সংরক্ষণ করবেন?
জেমি করখিল

42

২০১৫ সাল থেকে ইসমাস্ক্রিপ্টের সাহায্যে আপনি স্প্রেড সিনট্যাক্স (… তিনটি বিন্দু) ব্যবহার করতে পারেন:

let  people = { id: 4 ,firstName: 'John'};
people = { ...people, secondName: 'Fogerty'};

এটি আপনাকে সাব অবজেক্ট যুক্ত করার অনুমতি দেয়:

people = { ...people, city: { state: 'California' }};

ফলাফলটি হবে:

{  
   "id": 4,
   "firstName": "John",
   "secondName": "Forget",
   "city": {  
      "state": "California"
   }
}

আপনি অবজেক্টগুলি মার্জ করতে পারেন:

var mergedObj = { ...obj1, ...obj2 };

13

আপনি Object.assignথেকে ব্যবহার করতে পারেন ECMAScript 2015। এটি আপনাকে একবারে নেস্টেড বৈশিষ্ট্যগুলি যুক্ত করতে দেয়। উদাহরণ:

const myObject = {};

Object.assign(myObject, {
    firstNewAttribute: {
        nestedAttribute: 'woohoo!'
    }
});

PS: এটি নির্ধারিত বৈশিষ্ট্যগুলির সাথে বিদ্যমান অবজেক্টটিকে ওভাররাইড করবে না। পরিবর্তে তারা যুক্ত করা হবে। তবে আপনি যদি কোনও বিদ্যমান বৈশিষ্ট্যটির জন্য কোনও মান নির্ধারণ করেন তবে তা ওভাররাইড হবে।


7
extend: function(){
    if(arguments.length === 0){ return; }
    var x = arguments.length === 1 ? this : arguments[0];
    var y;

    for(var i = 1, len = arguments.length; i < len; i++) {
        y = arguments[i];
        for(var key in y){
            if(!(y[key] instanceof Function)){
                x[key] = y[key];
            }
        }           
    };

    return x;
}

একাধিক জসন বস্তু প্রসারিত (ফাংশন উপেক্ষা):

extend({obj: 'hej'}, {obj2: 'helo'}, {obj3: {objinside: 'yes'}});

একক জেসন বস্তুর ফলস্বরূপ


2

আপনি প্রসারিত ফাংশনটি ব্যবহার করে আপনার জসনে নতুন জসন অবজেক্টগুলি যুক্ত করতে পারেন ,

var newJson = $.extend({}, {my:"json"}, {other:"json"});
// result -> {my: "json", other: "json"}

প্রসারিত ফাংশনের জন্য খুব ভাল বিকল্প হ'ল পুনরাবৃত্তিমূলক মার্জ। প্রথম প্যারামিটার হিসাবে কেবল আসল মান যুক্ত করুন (আরও বিকল্পের জন্য ডকুমেন্টেশন পড়ুন)। উদাহরণ,

var newJson = $.extend(true, {}, {
    my:"json",
    nestedJson: {a1:1, a2:2}
}, {
    other:"json",
    nestedJson: {b1:1, b2:2}
});
// result -> {my: "json", other: "json", nestedJson: {a1:1, a2:2, b1:1, b2:2}}

2

আপনি সরাসরি কোনও বস্তুর আক্ষরিক ক্ষেত্রে পরিবর্তনশীলগুলির সাথে অ্যাট্রিবিউট যুক্ত করতে পারেন।

const amountAttribute = 'amount';
const foo = {
                [amountAttribute]: 1
            };
foo[amountAttribute + "__more"] = 2;

ফলাফল স্বরূপ:

{
    amount: 1, 
    amount__more: 2
}

0

ব্যবহার $.extend()এর jQuery , এভাবে:

token = {_token:window.Laravel.csrfToken};
data = {v1:'asdass',v2:'sdfsdf'}
dat = $.extend(token,data); 

আমি আশা করি আপনি তাদের সেবা করবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.