কিভাবে লুপের জন্য জাভাস্ক্রিপ্ট দ্বারা জসন তৈরি করবেন?


99

আমার কাছে নির্বাচিত ট্যাগের অ্যারে রয়েছে।

<select id='uniqueID' name="status">
      <option value="1">Present</option>
      <option value="2">Absent</option>
 </select>

এবং আমি জাভাস্ক্রিপ্টে দুটি ক্ষেত্র 'ইউনিকআইডিফসলেক্ট এবং অপশনভ্যালু' যুক্ত একটি জসন বস্তু তৈরি করতে চাই।

আমি getElementsByName ("স্থিতি") ব্যবহার করি এবং আমি এটিতে পুনরাবৃত্তি করি।

সম্পাদনা

আমার মতো করা দরকার

[{"selectID":2,"OptionValue":"2"},
{"selectID":4,"optionvalue":"1"}]

এবং তাই ...


আমি ধরে নিই যে অপশনভ্যালুতে প্রতিটি 'বিকল্প' উপাদানের 'মান' বৈশিষ্ট্য হওয়া উচিত: 1, 2 ইত্যাদি But তবে আইডি কী? এটা কি লেখা? "উপস্থিত", "অনুপস্থিত", ইত্যাদি?
সিস্টেম PAUSE

ঠিক আছে, সুতরাং আইডি যদি নির্বাচনের ইউনিক আইডি হয়, তবে কেবলমাত্র একটি বিকল্প থাকতে পারে ভ্যালু, তাই না? আমি মনে করি আপনি বর্তমান নির্বাচন চান, এবং সমস্ত নির্বাচনের একটি অ্যারে না?
সিস্টেম PAUSE

উত্তর:


174

আপনার অনুরোধটি আমি যা বুঝতে পারি তা থেকে এটি কাজ করা উচিত:

<script>
//  var status  = document.getElementsByID("uniqueID"); // this works too
var status  = document.getElementsByName("status")[0];
var jsonArr = [];

for (var i = 0; i < status.options.length; i++) {
    jsonArr.push({
        id: status.options[i].text,
        optionValue: status.options[i].value
    });
}
</script>

41
জেএসএন হ'ল একটি বস্তু এবং অ্যারে নয়।
গম্বো

এটি json অবজেক্ট অ্যারে তৈরি করে। তবে আমার কেবল একটি জসন অবজেক্ট দরকার।
বিকাশ

4
আপনাকে var jsonObj = নতুন অ্যারে () এর মতো অ্যারে ঘোষণা করতে হবে না; আপনার উদাহরণ আমার জন্য কাজ করে না। আমি যখন নতুন অ্যারে () এ পরিবর্তন করি, তখন এটি কার্যকর হয়।
মেও

18
var jsonArr = [];একটি নতুন অ্যারে তৈরি করে। var jsonObj = {};একটি নতুন অবজেক্ট তৈরি করে
b_dubb

সুতরাং, বোবা প্রশ্ন, আমি অবজেক্টগুলির একটি অ্যারে এবং অবজেক্টগুলির একটি অ্যারে যুক্ত একটি বস্তুর মধ্যে পার্থক্য জানি (বেশ কিছুটা, এই পোস্টে jsonArr = []এবং এর jsonObj = {}মধ্যে পার্থক্য )। আমার কাছে সম্ভবত খুব ঘন ঘন, এবং সম্ভবত ভ্রান্তভাবে, এমন একটি অবজেক্টের সাথে উল্লেখ করা হয়েছে যার মধ্যে এমন একটি অবজেক্টের অ্যারে রয়েছে যা প্রতিটি হোল্ড (সম্ভবত আলাদা) নাম / মান জোড়া "জেএসএন অবজেক্ট" হিসাবে ধারণ করে। সাধারণ জেএসওএন সিনট্যাক্সের সাথে পরিচিত হওয়ার সাথে (যেমন আপনার আসল .jsonফাইলে কী থাকতে পারে ), আমি জানি যে সিন্টেক্সিকভাবে এটি আলাদা। সুতরাং, আপনি কি কেবল JSON হিসাবে অবজেক্টের অ্যারেটি উল্লেখ করবেন?
ভয়েডকিং


8

আপনি যদি একটি একক জাভাস্ক্রিপ্ট অবজেক্ট চান তবে নীচের মতো:

{ uniqueIDofSelect: "uniqueID", optionValue: "2" }

(যেখানে বিকল্প 2, "অনুপস্থিত", বর্তমান নির্বাচন) তবে নিম্নলিখিত কোডটি এটি তৈরি করতে হবে:

  var jsObj = null;
  var status = document.getElementsByName("status")[0];
  for (i = 0, i < status.options.length, ++i) {
     if (options[i].selected ) {
        jsObj = { uniqueIDofSelect: status.id, optionValue: options[i].value };
        break;
     }
  }

আপনি যদি এই জাতীয় সমস্ত বস্তুর একটি অ্যারে চান (কেবলমাত্র নির্বাচিত নয়) তবে মাইকেলের কোডটি ব্যবহার করুন তবে এরstatus.options[i].text জন্য স্যুপ আউট করুনstatus.id

আপনি যদি একটি স্ট্রিং চান যা নির্বাচিত বস্তুর JSON উপস্থাপনা ধারণ করে, পরিবর্তে এটি ব্যবহার করুন:

  var jsonStr = "";
  var status = document.getElementsByName("status")[0];
  for (i = 0, i < status.options.length, ++i) {
     if (options[i].selected ) {
        jsonStr = '{ '
                  + '"uniqueIDofSelect" : '
                  + '"' + status.id + '"'
                  + ", "
                  + '"optionValue" : '
                  + '"'+ options[i].value + '"'
                  + ' }';
        break;
     }
  }

3

যদি আমি লুপের জন্য উত্পন্ন স্ট্রিং থেকে জাভাস্ক্রিপ্ট অবজেক্ট তৈরি করতে চাই তবে আমি জেএসএন থেকে অবজেক্টের কাছে যেতে চাই। আমি লুপের জন্য পুনরাবৃত্তি করে JSON স্ট্রিং উত্পন্ন করব এবং তারপরে JSON থেকে অবজেক্টের মূল্যায়ন করতে যে কোনও জনপ্রিয় জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক ব্যবহার করব।

আমি প্রোটোটাইপ জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক ব্যবহার করেছি । চাবি এবং মান সহ আমার দুটি অ্যারে রয়েছে। আমি লুপের জন্য পুনরাবৃত্তি করি এবং বৈধ JSON স্ট্রিং উত্পন্ন করি। আমি JSON স্ট্রিংটিকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করতে evalJSON () ফাংশনটি ব্যবহার করি ।

এখানে উদাহরণ কোড। আপনার এর উপর একটি বিচারের ফায়ারবাগ কনসোলটি

var key = ["color", "size", "fabric"];
var value = ["Black", "XL", "Cotton"];

var json = "{ ";
for(var i = 0; i < key.length; i++) {
    (i + 1) == key.length ? json += "\"" + key[i] + "\" : \"" + value[i] + "\"" : json += "\"" + key[i] + "\" : \"" + value[i] + "\",";
}
json += " }";
var obj = json.evalJSON(true);
console.log(obj);

4
ধন্যবাদ মানুষ এটি আমাকে অনেক সাহায্য করেছে, আমি jsonstring.evalJSON (সত্য) এর পরিবর্তে PARSE.json (jsonstring) ব্যবহার করেছি;
অর্ণাড বোচোট

0

আপনার প্রশ্নটি ডিকোড করা বেশ শক্ত, তবে আমি এটির জন্য ছুরিকাঘাতের চেষ্টা করব।

তুমি বলো:

আমি দুটি ক্ষেত্র uniqueIDofSelectএবং optionValueজাভাস্ক্রিপ্টে একটি জসন বস্তু তৈরি করতে চাই ।

এবং তারপরে আপনি বলেছেন:

আমার মতো আউটপুট দরকার

[{"selectID":2,"optionValue":"2"},
{"selectID":4,"optionvalue":"1"}]

ঠিক আছে, এই উদাহরণ আউটপুটটির ক্ষেত্রটির নাম নেই uniqueIDofSelect, এটি কেবল আছে optionValue

যাইহোক, আপনি বস্তুর অ্যারে জিজ্ঞাসা করছেন ...

তারপরে মাইকেলকে দেওয়া মন্তব্যে উত্তরটি আপনি বলেছেন:

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

সুতরাং আপনি কি বস্তুর একটি অ্যারে চান না?

তাহলে তুমি কি চাও?

আপনার মন আপ করুন।


প্রথম জিনিস: দুঃখিত যে অনন্য আইডিওফসিলিট == নির্বাচন আইডি (নির্বাচিত উপাদানগুলির আইডি, আমি আমার রেকর্ডের আইডি নির্বাচনী উপাদান আইডি হিসাবে রাখতে পারি) যা আমরা অ্যাস্পটনেট এমভিসিতে অসংখ্য অবজেক্টস প্রদর্শনের জন্য ব্যবহার করছি। ২) আপনি ঠিক বলেছেন, আমার ভুলটি যে আমি পুরো আউটপুটটিকে মজাদার করেছিলাম সেটি হ'ল একটি জসন অবজেক্ট। তবে এটি বস্তুর সত্যই অ্যারে। এবং তাই মাইকেল এর উত্তর নিখুঁত। পয়েন্ট আউট করার জন্য ধন্যবাদ।
বিকাশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.