सरणी को JSON में बदलें


383

मेरे पास एक Array है var cars = [2,3,..]जो कुछ पूर्णांक रखता है। मैंने सरणी में कुछ मान जोड़ दिए हैं, लेकिन मुझे अब इस सरणी को jQuery की .getविधि के माध्यम से एक पृष्ठ पर भेजने की आवश्यकता है । भेजने के लिए मैं इसे JSON ऑब्जेक्ट में कैसे बदल सकता हूं?


बस डबल-चेकिंग: वह सरणी है जिसे आप पृष्ठ को जावास्क्रिप्ट सरणी में भेजना चाहते हैं या यह सर्वर पर है?
इयान ऑक्सले

यह एक जावास्क्रिप्ट सरणी है, मैं इसे पायथन लिपि में भेजूंगा और पायथन JSON स्ट्रिंग का उपयोग करेगा और उसी के साथ काम करेगा।
दीवाना हो गया

जवाबों:


657

पिछड़ी-अनुकूलता के लिए स्क्रिप्ट: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

और कॉल करें:

var myJsonString = JSON.stringify(yourArray);

नोट: JSON ऑब्जेक्ट अब अधिकांश आधुनिक वेब ब्राउज़र (IE 8 और ऊपर) का हिस्सा है। पूर्ण सूचीकरण के लिए caniuse देखें । नीचे अपनी टिप्पणी के लिए श्रेय: @Spudley को जाता है


5
यह काम करता है, jQuery इस तरह एक समारोह है? अगर jQuery के पास पहले से कोई फंक्शन है तो मैं दूसरी js फाइल को अटैच नहीं करना चाहूंगा।
दीवाना हो गया

1
jQuery के 1.4.1 में JSON.parse का कार्यान्वयन है, लेकिन JSON.stringify नहीं ... यदि आप minifiy json2.js इसके <3k मुझे लगता है।
gnarf

6
हाँ, मैं हैरान था jQuery के इस में भी नहीं बनाया गया था
JonoW

120
इस उत्तर को पढ़ने वाले किसी भी व्यक्ति के लिए, यह इंगित करने योग्य है कि सभी आधुनिक ब्राउज़रों में JSONऑब्जेक्ट को मानक के रूप में शामिल किया गया है , जिसका अर्थ है कि आपको इस स्क्रिप्ट की आवश्यकता नहीं है जब तक कि आप IE7 या फ़ायरफ़ॉक्स 3.0 जैसे पुराने ब्राउज़र का समर्थन करने की योजना नहीं बनाते हैं। समर्थन चार्ट के लिए CanIUse देखें ।
स्पडली

1
यह इंगित करने योग्य है कि आप इसे ब्राउज़र कंसोल में कर सकते हैं: var a = [paste]; JSON.stringify (ए)
माइकल कोल

70

मैंने इसे इस तरह से बनाया:

अगर मेरे पास:

var jsonArg1 = new Object();
    jsonArg1.name = 'calc this';
    jsonArg1.value = 3.1415;
var jsonArg2 = new Object();
    jsonArg2.name = 'calc this again';
    jsonArg2.value = 2.73;

var pluginArrayArg = new Array();
    pluginArrayArg.push(jsonArg1);
    pluginArrayArg.push(jsonArg2);

JSON सरणी में pluginArrayArg (जो शुद्ध जावास्क्रिप्ट सरणी है) कन्वर्ट करने के लिए:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))

1
आपने मेरी जान बचाई
एमडी। शफयातुल हक


11

मैंने json2 लाइब्रेरी का उपयोग करने का निर्णय लिया और मुझे "चक्रीय डेटा संरचनाओं" के बारे में एक त्रुटि मिली।

मुझे यह पता चल गया कि json2 कैसे अपनी जटिल वस्तु को रूपांतरित करता है। न केवल यह अब काम करता है, बल्कि मैंने केवल उन क्षेत्रों को शामिल किया है जिनकी मुझे आवश्यकता है। यहाँ देखें कि मैंने यह कैसे किया:

OBJ.prototype.toJSON = function (key) {
       var returnObj = new Object();
       returnObj.devid = this.devid;
       returnObj.name = this.name;
       returnObj.speed = this.speed;
       returnObj.status = this.status;
       return returnObj;
   }

11

या किसी ऑब्जेक्ट के रूप में एरे को परिभाषित करने का प्रयास करें। (var Cars = {};) तब json में बदलने की कोई आवश्यकता नहीं है। यह आपके उदाहरण में व्यावहारिक नहीं हो सकता है लेकिन मेरे लिए अच्छा काम किया है।


4

एक और तरीका यह हो सकता है:

        var json_arr = {};
        json_arr["name1"] = "value1";
        json_arr["name2"] = "value2";
        json_arr["name3"] = "value3";

        var json_string = JSON.stringify(json_arr);

1

यदि आपके पास केवल 1 वस्तु है जैसे आपने पूछा था, तो निम्नलिखित काम करेगा।

var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c); 

1

सबसे छोटा तरीका है जो मुझे पता है कि पूर्णांक की सरणी से वैध json उत्पन्न करना है

let json = `[${cars}]`

अधिक सामान्य वस्तु / सरणी के लिए ( परिपत्र संदर्भ के बिना ) JSON.stringify (कारों) का उपयोग करें


1

क्योंकि मेरा सरणी नीचे की तरह था: और मैंने गतिशील रूप से इसे बनाने के लिए .push फ़ंक्शन का उपयोग किया था

my_array = ["234", "23423"];

एकमात्र तरीका है कि मैंने अपने सरणी को json में बदल दिया है

json = Object.assign({}, my_array);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.