জাভাস্ক্রিপ্টের মাধ্যমে জেএসএন অবজেক্টটি গতিশীলভাবে তৈরি করুন (সমাপ্ত স্ট্রিং ছাড়াই)


130

আমার কাছে এই JSON ডেটা রয়েছে:

{
    "employees": [
        {
            "firstName": "John",
            "lastName": "Doe"
        },
        {
            "firstName": "Anna",
            "lastName": "Smith"
        },
        {
            "firstName": "Peter",
            "lastName": "Jones"
        }
    ]
}

ধরুন আমি জানি না আমার কতগুলি কলাম এবং সারি কর্মচারী রয়েছে, আমি কীভাবে জাভাস্ক্রিপ্টে এই অবজেক্টটি তৈরি করব (সংক্ষিপ্ত স্ট্রিং ছাড়াই)? ধরে নিন যে আমি "অনজেনারেটেড রো" পদ্ধতিতে প্রতিটি সারি পেয়েছি এবং আমার প্রতিটি কলাম (ফার্স্টনাম, লাস্টনাম) '{}' বন্ধনীতে ঠেলাতে হবে।

var viewData = { 
    employees : [] 
};

var rowNum = -1; 

function onGeneratedRow(columnsResult)
{
    rowNum = rowNum + 1;
    viewData.employees.push({});    
    columnsResult.forEach(function(column) {                  
    var columnName = column.metadata.colName;
    viewData.employees[rowNum][columnName] = column.value;  });
}

1
কী columnsResult? কী metadata?
জর্জি

1
এই প্রশ্নগুলি বর্তমানে আমার কাছে বোধগম্য নয়, আপনি আরও ব্যাখ্যা করতে পারবেন, আপনার ডেটা কোথা থেকে আসছে এবং কোন ফর্ম্যাটে রয়েছে। আপনি কি কেবল বিদ্যমান ডেটাতে যুক্ত করছেন বা স্ক্র্যাচ থেকে এগুলি সব তৈরি করছেন? আপনার সমস্যাটি কী তা বোঝানোর জন্য আপনি একটি jsfiddle তৈরি করতে পারেন। আপনার প্রশ্নটি কি সত্যিই ঠিক আছে, অ্যারে / বা জাভাস্ক্রিপ্ট অবজেক্টের মধ্যে কীভাবে ডেটা অ্যাক্সেস করবেন? আর দেয় ডেটা, JSON অথবা জাভাস্ক্রিপ্ট অবজেক্ট সম্পর্কে স্পষ্ট হওয়া: stackoverflow.com/questions/8294088/javascript-object-vs-json
Xotic750

2
ধরুন "কলামনাম" হ'ল "প্রথম নাম" এবং "কলাম" মূল্য "উদাহরণস্বরূপ:" জন ")। আমি কেবল তাদের বন্ধনী ('{}') তে
গতিশীলভাবে কীভাবে ঠেলাতে হবে তা জানতে হবে

1
আপনি যে কোডটি দেখিয়েছেন তা চালালে কী ঘটে?
nnnnnn

@ ওহাদিনহো আপনার ইনপুট ডেটা স্ট্রুকিউশন (জেসন) কী তা পরিষ্কার নয়columnsResult
কামিল কিয়েসজেউস্কি

উত্তর:


154

এটি আপনার প্রয়োজন!

function onGeneratedRow(columnsResult)
{
    var jsonData = {};
    columnsResult.forEach(function(column) 
    {
        var columnName = column.metadata.colName;
        jsonData[columnName] = column.value;
    });
    viewData.employees.push(jsonData);
 }

আপনি কীভাবে জানলেন যে ওপিকে ´rowNum´ দিয়ে সারিগুলি গণনা করার দরকার নেই?
Xotic750

1
পুশের জন্য সারি নম্বর লাগবে না
ওয়াকার আলমগীর

যেহেতু জসন প্রজন্মের গণনা প্রয়োজন হয় না, সারি পেতে আপনি সর্বদা। দৈর্ঘ্যটি ব্যবহার করতে পারেন।
ওয়াকার আলমগীর

5
আমি কখনই বলিনি যে জেএসএন প্রজন্ম তা করে। আপনি যে বক্তব্যটি "এটি আপনার প্রয়োজন!" এটিই আরও বেশি ঘটনা ছিল, তবে আমি কীভাবে জানতে পেরেছিলাম যে ওপি দ্বারা গণনা প্রয়োজন হয় না, বা আপনি কী ধরে নিয়েছেন? আপনার উত্তরটি JSON বিটিডব্লু উত্পন্ন করে না।
Xotic750

1
@ ওয়াকারআলামগীর - এই মুহুর্তে আমার ঠিক এটির দরকার ছিল। চিয়ার্স!
বব.মাজজো

96

সম্ভবত এই তথ্য আপনাকে সাহায্য করবে।

var sitePersonel = {};
var employees = []
sitePersonel.employees = employees;
console.log(sitePersonel);

var firstName = "John";
var lastName = "Smith";
var employee = {
  "firstName": firstName,
  "lastName": lastName
}
sitePersonel.employees.push(employee);
console.log(sitePersonel);

var manager = "Jane Doe";
sitePersonel.employees[0].manager = manager;
console.log(sitePersonel);

console.log(JSON.stringify(sitePersonel));


10

এই বিষয়টি, বিশেষত Xotic750 এর উত্তরটি আমার পক্ষে খুব সহায়ক হয়েছিল। আমি এজ্যাক্স ব্যবহার করে এটি পিএইচপি স্ক্রিপ্টে পাস করার জন্য একটি জসন ভেরিয়েবল তৈরি করতে চেয়েছিলাম। আমার মান দুটি অ্যারেতে সংরক্ষণ করা হয়েছিল এবং আমি সেগুলি জেসন ফর্ম্যাটে চেয়েছিলাম। এটি একটি সাধারণ উদাহরণ:

valArray1 = [121, 324, 42, 31];
valArray2 = [232, 131, 443];
myJson = {objArray1: {}, objArray2: {}};
for (var k = 1; k < valArray1.length; k++) {
    var objName = 'obj' + k;
    var objValue = valArray1[k];
    myJson.objArray1[objName] = objValue;
}
for (var k = 1; k < valArray2.length; k++) {
    var objName = 'obj' + k;
    var objValue = valArray2[k];
    myJson.objArray2[objName] = objValue;
}
console.log(JSON.stringify(myJson));

কনসোল লগের ফলাফলটি এরকম কিছু হওয়া উচিত:

{
   "objArray1": {
        "obj1": 121,
        "obj2": 324,
        "obj3": 42,
        "obj4": 31
   },
   "objArray2": {
        "obj1": 232,
        "obj2": 131,
        "obj3": 443
  }
}

2
আপনি এখানে জমা দেওয়া কোডটি যথাযথভাবে ফাঁক করে দেওয়ার ক্ষেত্রে কি আমি প্রয়োজনীয়তার উপর জোর দিতে পারি? ব্যবধান ছাড়াই পড়া অনেক কঠিন।
কেভিন লুইস

1
এটি আমার কোনও শেষ হতে পারে না। ঠিক আমার যা প্রয়োজন what
ডেরেক

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