নেস্টেড জেএসওএন অবজেক্টস - আমাকে কি সব কিছুর জন্য অ্যারে ব্যবহার করতে হবে?


108

JSON এ নেস্টেড অবজেক্টস থাকার কোনও উপায় আছে যাতে আমাকে সমস্ত কিছু থেকে অ্যারে তৈরি করতে না হয়? আমার অবজেক্টটি ত্রুটি ছাড়াই পার্স করার জন্য আমার মনে হয় এর মতো কাঠামো দরকার:

{"data":[{"stuff":[
    {"onetype":[
        {"id":1,"name":"John Doe"},
        {"id":2,"name":"Don Joeh"}
    ]},
    {"othertype":[
        {"id":2,"company":"ACME"}
    ]}]
},{"otherstuff":[
    {"thing":
        [[1,42],[2,2]]
    }]
}]}

যদি আমি এই অবজেক্টটিকে "রেজাল্ট" নামক ভেরিয়েবলের মধ্যে নিয়ে যাই তবে আমাকে এর মতো নেস্টেড অবজেক্টগুলি অ্যাক্সেস করতে হবে:

result.data[0].stuff[0].onetype[0]

এবং

result.data[1].otherstuff[0].thing[0]

এটি আমার কাছে আনাড়ি এবং অপ্রয়োজনীয় মনে হয়, যদি সম্ভব হয় তবে আমি পছন্দ করতাম:

result.stuff.onetype[0]

এবং

result.otherstuff.thing

যখন সমস্ত কিছু অ্যারে হয় তখন আমি কীভাবে সরাসরি অবজেক্ট কীগুলি ব্যবহার করতে পারি? আমার বিভ্রান্ত ও অশিক্ষিত মনের কাছে এরকম কিছু আরও উপযুক্ত মনে হবে:

{"data":
    {"stuff":
        {"onetype":[
            {"id":1,"name": ""},
            {"id":2,"name": ""}
        ]}
        {"othertype":[
            {"id":2,"xyz": [-2,0,2],"n":"Crab Nebula","t":0,"c":0,"d":5}
        ]}
    }
    {"otherstuff":
        {"thing":
            [[1,42],[2,2]]
        }
    }
}

আমি সম্ভবত এখানে মৌলিক কিছু ভুল বুঝেছি, তবে আমি দ্বিতীয় স্টাইলের অবজেক্ট গ্রহণ করার জন্য jQuery পার্সার (না jQuery 1.4 দ্বারা ব্যবহৃত নেটিভ এফএফ পার্সার) পেতে পারি না। যদি কেউ আমাকে আলোকিত করতে পারে তবে তা কৃতজ্ঞ হবে!


1
একাধিক সম্পত্তি {"stuff": ..., "otherstuff": ...}
সম্বলিত

1
@ জেসন: তিনি ইতিমধ্যে এটি জানেন বলে মনে হয়; তিনি নিজেই লিখেছিলেন {"id":2,"name": ""}। তবে, তিনি যা জিজ্ঞাসা করছেন তা কমবেশি, তাই আমি নিশ্চিত নই।
স্ল্যাक्स

উত্তর:


201

আপনার অ্যারে ব্যবহার করার দরকার নেই।

জেএসএন মানগুলি অ্যারে, অবজেক্টস বা আদিম (সংখ্যা বা স্ট্রিং) হতে পারে।

আপনি JSON এর মতো লিখতে পারেন:

{ 
    "stuff": {
        "onetype": [
            {"id":1,"name":"John Doe"},
            {"id":2,"name":"Don Joeh"}
        ],
        "othertype": {"id":2,"company":"ACME"}
    }, 
    "otherstuff": {
        "thing": [[1,42],[2,2]]
     }
}

আপনি এটি এর মতো ব্যবহার করতে পারেন:

obj.stuff.onetype[0].id
obj.stuff.othertype.id
obj.otherstuff.thing[0][1]  //thing is a nested array or a 2-by-2 matrix.
                            //I'm not sure whether you intended to do that.

9

প্রতিটি বস্তুর নাম প্যারেন্ট অবজেক্টের ভিতরে রাখতে হবে:

{ "data": {
    "stuff": {
        "onetype": [
            { "id": 1, "name": "" },
            { "id": 2, "name": "" }
        ],
        "othertype": [
            { "id": 2, "xyz": [-2, 0, 2], "n": "Crab Nebula", "t": 0, "c": 0, "d": 5 }
        ]
    },
    "otherstuff": {
        "thing":
            [[1, 42], [2, 2]]
    }
}
}

সুতরাং আপনি এই জাতীয় কোনও বিষয় ঘোষণা করতে পারবেন না:

var obj = {property1, property2};

এটা করা হয়েছে

var obj = {property1: 'value', property2: 'value'};

8

আপনার জেএসওএন ডেটার ভিতরে আপনার কাছে অনেকগুলি রিলান্ড্যান্ট নেস্টেড অ্যারে রয়েছে তবে তথ্য পুনরুদ্ধার করা সম্ভব। যদিও অন্যরা বলেছেন যে আপনি এটি পরিষ্কার করতে চান।

প্রতিটি () মোড়কে অন্য অ্যারেতে () শেষ অ্যারে পর্যন্ত ব্যবহার করুন।

jQuery জন্য result.data[0].stuff[0].onetype[0]আপনি নিম্নলিখিত করতে পারেন:

`

$.each(data.result.data, function(index0, v) {
    $.each(v, function (index1, w) {
        $.each(w, function (index2, x) {
            alert(x.id);
        });
    });

});

`

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