jquery स्ट्रिंग को json?


79

एक जौन स्ट्रिंग से जाने और $ .parseJSON का उपयोग करने के बजाय, मुझे अपनी वस्तु लेने और इसे जर्स का प्रतिनिधित्व करने वाले स्ट्रिंग के रूप में एक चर में संग्रहीत करने की आवश्यकता है।

(एक पुस्तकालय मैं एक विकृत जौन प्रकार की अपेक्षा कर रहा हूं ताकि मुझे इसे काम करने के लिए इसके साथ गड़बड़ करने की आवश्यकता हो।)

ऐसा करने का सबसे अच्छा तरीका क्या है?



कौन सी लाइब्रेरी एक विकृत JSON स्ट्रिंग की उम्मीद करती है? : /
मार्सेल कोर्पेल

स्टैनफोर्ड जावास्क्रिप्ट क्रिप्टोग्राफी लाइब्रेरी आउटपुट और पार्स विकृत JSON, बग को फिलहाल लाया गया है।
गुप्त

जवाबों:


84

संपादित करें: आपको नीचे दिए गए कोड को लागू करने के बजाय डगलस क्रॉकफोर्ड से json2.js लाइब्रेरी का उपयोग करना चाहिए। यह कुछ अतिरिक्त सुविधाएँ और बेहतर / पुराने ब्राउज़र समर्थन प्रदान करता है।

Json2.js फ़ाइल को इससे प्राप्त करें: https://github.com/douglascrockford/JSON-js


// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function (obj) {
    var t = typeof (obj);
    if (t != "object" || obj === null) {
        // simple data type
        if (t == "string") obj = '"'+obj+'"';
        return String(obj);
    }
    else {
        // recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);
        for (n in obj) {
            v = obj[n]; t = typeof(v);
            if (t == "string") v = '"'+v+'"';
            else if (t == "object" && v !== null) v = JSON.stringify(v);
            json.push((arr ? "" : '"' + n + '":') + String(v));
        }
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    }
};

var tmp = {one: 1, two: "2"};
JSON.stringify(tmp); // '{"one":1,"two":"2"}'

से कोड: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/


23
मैं इस फ़ंक्शन के बजाय json2.js लाइब्रेरी की सिफारिश करूंगा , क्योंकि यह कुछ प्रकारों को सही ढंग से हैंडल नहीं करता है, जैसे गुण युक्त undefined, फ़ंक्शंस, (जो एक मान्य JSON मान नहीं हैं), बूलियन ऑब्जेक्ट्स (जैसे new Boolean(true);), या NaNजिसे प्रतिस्थापित किया जाना चाहिए nullआदि के साथ ... यह अतिरिक्त वैकल्पिक तर्कों, replacerफ़ंक्शन और spacesइंडेंटेशन की संख्या का समर्थन नहीं करता है , जो पूरी तरह से मानक में वर्णित हैं ।
क्रिश्चियन सी। साल्वादो

3
मुझे लगता है कि शायद json2 लिंक होना चाहिए: github.com/douglascrockford/JSON-js/blob/master/json2.js
fisherwebdev

5
अधिकांश ब्राउज़रों में इन दिनों एक देशी JSON वस्तु होती है, जिसमें पार्स और स्ट्रींग मेथड शामिल हैं। तो बस कोशिश करें JSON.stringify({})और देखें कि क्या आपको "{}"उपरोक्त कोड को शामिल करने की आवश्यकता के बिना मिलता है । आप चाबियों को छानने या सुंदर छपाई करने के लिए मापदंडों में भी पास कर सकते हैं, जैसे JSON.stringify({a:1,b:2}, null, 2)प्रत्येक कुंजी के सामने एक नई रेखा और 2 रिक्त स्थान रखते हैं।
एलेक्सचैफी

आधुनिक उत्तर की तलाश करने वालों के लिए: JSON.stringify (); सभी ब्राउज़रों (डेस्कटॉप और मोबाइल) में लागू किया गया है: developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
पाब्लो मार्टिनेज

38

मैं उपयोग करता हूं

$.param(jsonObj)

जो मुझे तार हो जाता है।


8
लेकिन यह JSON नहीं बनाता है (और यह सवाल था)।
फेलिक्स क्लिंग

22
लेकिन यह छोटा सा कोड प्रश्न अनुरोधों के सभी शीर्षक को कर रहा है: P
nils petersohn

35

अधिकांश ब्राउज़रों में JSONइन दिनों एक मूल वस्तु होती है, जिसमें शामिल हैं parseऔर stringifyविधियाँ। तो बस कोशिश करें JSON.stringify({})और देखें कि क्या आपको मिलता है "{}"। आप चाबियों को छानने या सुंदर छपाई करने के लिए मापदंडों में भी पास कर सकते हैं, जैसे JSON.stringify({a:1,b:2}, null, 2)प्रत्येक कुंजी के सामने एक नई रेखा और 2 रिक्त स्थान रखते हैं।

JSON.stringify({a:1,b:2}, null, 2)

देता है

"{\n  \"a\": 1,\n  \"b\": 2\n}"

जो प्रिंट करता है

{
  "a": 1,
  "b": 2
}

अपने प्रश्न के भाग में गड़बड़ी के लिए, दूसरे पैरामीटर का उपयोग करें। से http://www.javascriptkit.com/jsref/json.shtml :

प्रतिकृति पैरामीटर या तो एक फ़ंक्शन या स्ट्रिंग / संख्याओं का एक सरणी हो सकता है। यह JSON ऑब्जेक्ट के भीतर प्रत्येक सदस्य के माध्यम से आपको यह तय करने देता है कि प्रत्येक सदस्य को किस मूल्य में बदला जाना चाहिए। एक समारोह के रूप में यह वापस आ सकता है:

  • एक संख्या, स्ट्रिंग, या बूलियन, जो संपत्ति के मूल मूल्य को लौटाए गए के साथ बदल देता है।
  • एक वस्तु, जिसे क्रमबद्ध किया जाता है, फिर लौट आती है। ऑब्जेक्ट मेथड्स या फ़ंक्शंस की अनुमति नहीं है, और इसके बजाय हटा दिए जाते हैं।
  • अशक्त, जिसके कारण संपत्ति को हटा दिया जाता है।

एक सरणी के रूप में, इसके अंदर परिभाषित मूल्य JSON ऑब्जेक्ट के अंदर गुणों के नाम से मेल खाते हैं जो JSON ऑब्जेक्ट में परिवर्तित होने पर बनाए रखा जाना चाहिए।


10

सबसे अच्छा तरीका मैंने पाया है कि jQuery JSON का उपयोग करना है


1
क्योंकि यह एक jquery प्लगइन है और क्या सीधे jquery द्वारा प्रदान नहीं किया गया है
रजत गुप्ता

@ user01 लेकिन jquery में ऐसा करने का तरीका शामिल नहीं है (कम से कम यह तब नहीं था जब मैंने यह उत्तर लिखा था, यकीन नहीं होता कि अब ऐसा होता है)
डेविड रेनॉल्ड्स

@DavidReynolds: निश्चित रूप से हाँ, मैं समझता हूँ :) मैं तुम्हें करने के लिए किसी अपराध का इरादा नहीं था लेकिन सिर्फ समस्या का :) एक समाधान के रूप में इस पर टिप्पणी की
रजत गुप्ता

0

आप JSON को ऑब्जेक्ट पर पार्स कर सकते हैं, फिर ajavscript ऑब्जेक्ट से अपने विकृत JSON बनाएं। यह सबसे अच्छा प्रदर्शन-वार, थियो नहीं हो सकता है।

अन्यथा, यदि आपको केवल स्ट्रिंग में बहुत छोटे बदलाव करने की आवश्यकता है, तो बस इसे एक स्ट्रिंग के रूप में मानें, और मानक जावास्क्रिप्ट का उपयोग करके इसे मंगाएं।

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