জকিউরি ব্যবহার করে প্রতিটি ইনপুট মান দিয়ে গতিশীলভাবে একটি জেএসএন তৈরি করা


91

আমি এমন একটি পরিস্থিতি পেয়েছি যেখানে আমি পিএইচপি এর মাধ্যমে জেএসএন ফর্ম্যাট থেকে কিছু তথ্য পড়তে চাই, তবে জেএসএন ফর্ম্যাটটি কীভাবে গতিশীলভাবে তৈরি করতে জাভাস্ক্রিপ্ট অবজেক্টটি তৈরি করা উচিত তা বোঝার জন্য আমার কিছু সমস্যা হচ্ছে।

আমার পরিস্থিতি নিম্নরূপ:

<input title="QA" type="text" class="email">
<input title="PROD" type="text" class="email">
<input title="DEV" type="text" class="email">

আমার এখনও অবধি জাভাস্ক্রিপ্ট কোডটি প্রতিটি ইনপুট ডেটা আঁকড়ে ধরেছে, তবে এখান থেকে কীভাবে প্রক্রিয়া করা যায় তা আমি বুঝতে অক্ষম।

var taskArray = {};

$("input[class=email]").each(function() {
  var id = $(this).attr("title");
  var email = $(this).val();

  //how to create JSON?

});

সম্ভব হলে আমি নিম্নলিখিত আউটপুটটি পেতে চাই।

[{title: QA, email: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]

যেখানে ইমেলটি ইনপুট ক্ষেত্রের মান দ্বারা অর্জিত হয়।

উত্তর:


274

এটার মত:

function createJSON() {
    jsonObj = [];
    $("input[class=email]").each(function() {

        var id = $(this).attr("title");
        var email = $(this).val();

        item = {}
        item ["title"] = id;
        item ["email"] = email;

        jsonObj.push(item);
    });

    console.log(jsonObj);
}

ব্যাখ্যা

আপনি খুঁজছেন an array of objects। সুতরাং, আপনি একটি ফাঁকা অ্যারে তৈরি করুন। input'শিরোনাম' এবং কী হিসাবে 'ইমেল' ব্যবহার করে প্রত্যেকের জন্য একটি বস্তু তৈরি করুন । তারপরে আপনি অ্যারেতে প্রতিটি বস্তু যুক্ত করুন।

আপনার যদি স্ট্রিং দরকার হয় তবে করুন

jsonString = JSON.stringify(jsonObj);

নমুনা আউটপুট

[{"title":"QA","email":"a@b"},{"title":"PROD","email":"b@c"},{"title":"DEV","email":"c@d"}] 

এই 3 টি উদাহরণগুলিতে কেন আমি সর্বদা এটি পাই? 'আনকাচড রেফারেন্স এরিয়ার: jsonObj সংজ্ঞায়িত করা হয়নি'
Gino

@ জিনো আপনি কি পেস্ট অনুলিপি করেছেন বা টাইপ করেছেন? লাইনটি দেখুন যা jsonObj সংজ্ঞায়িত করে।
এটিজটোয়া

15

আমি মনে করি না যে আপনি আউটপুট হিসাবে JSON স্ট্রিংয়ের প্রয়োজন অনুমান করে আপনি কেবল jQuery ব্যবহার করে জাভাস্ক্রিপ্ট অবজেক্টগুলিকে JSON স্ট্রিংগুলিতে পরিণত করতে পারেন।

আপনি যে ব্রাউজারগুলিকে লক্ষ্য করছেন তার উপর নির্ভর করে আপনি JSON.stringifyJSON স্ট্রিং উত্পাদন করতে ফাংশনটি ব্যবহার করতে পারেন ।

আরও তথ্যের জন্য http://www.json.org/js.html দেখুন , সেখানে আপনি পুরানো ব্রাউজারগুলির জন্য একটি JSON পার্সারও খুঁজে পেতে পারেন যা জেএসওএন অবজেক্টটি স্থানীয়ভাবে সমর্থন করে না।

আপনার ক্ষেত্রে:

var array = [];
$("input[class=email]").each(function() {
    array.push({
        title: $(this).attr("title"),
        email: $(this).val()
    });
});
// then to get the JSON string
var jsonString = JSON.stringify(array);

10

এটি হ'ল এটি সাহায্য করবে, আমি যেখানেই সম্ভব খাঁটি জেএস পছন্দ করবো, এটি পারফরম্যান্সকে মারাত্মকভাবে উন্নত করবে কারণ আপনার কাছে প্রচুর জিকুয়েরি ফাংশন কল থাকবে না।

var obj = [];
var elems = $("input[class=email]");

for (i = 0; i < elems.length; i += 1) {
    var id = this.getAttribute('title');
    var email = this.value;
    tmp = {
        'title': id,
        'email': email
    };

    obj.push(tmp);
}

বড় +1 এই সমাধানটি
নিয়েছিল

0

উপরের উদাহরণ থেকে একই - আপনি যদি কেবল জসন (অবজেক্টের একটি অ্যারে নয়) সন্ধান করছেন just

function getJsonDetails() {
      item = {}
      item ["token1"] = token1val;
      item ["token2"] = token1val;
      return item;
}
console.log(JSON.stringify(getJsonDetails()))

এই আউটপুট হিসাবে প্রিন্ট ll (একটি বৈধ জেসন)

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