javascript - जावास्क्रिप्ट में पार्स JSON?




parsing (14)

इस प्रश्न का उत्तर यहां दिया गया है:

मैं जावास्क्रिप्ट में एक JSON स्ट्रिंग पार्स करना चाहता हूँ। प्रतिक्रिया कुछ ऐसा है

var response = '{"result":true,"count":1}';

मैं मूल्य result कैसे प्राप्त कर सकता हूं और इससे कैसे count सकता हूं?


Answers

ऐसा करने का एक आसान तरीका:

var data = '{"result":true,"count":1}';
var json = eval("[" +data+ "]")[0]; // ;)

मैंने सोचा कि JSON.parse(myObject) काम करेगा। लेकिन ब्राउज़रों के आधार पर, यह eval('('+myObject+')') का उपयोग करने लायक हो सकता है eval('('+myObject+')') । जेएसओएन में बहु-स्तर की सूची के लिए एकमात्र मुद्दा मैं देखने की सिफारिश कर सकता हूं।


parse() विधि का उपयोग parse() का सबसे आसान तरीका:

var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);

यह मानों को कैसे प्राप्त करें इसका एक उदाहरण है:

var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;

यदि आप चाहते हैं

var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);

आप JONObject द्वारा JSON तत्वों को (।) dot के साथ एक्सेस कर सकते हैं:

JsonObject.result;
JsonObject.count;

अधिकांश ब्राउज़र JSON.parse() समर्थन करते हैं, जिसे ईसीएमए -262 5 वें संस्करण में परिभाषित किया गया है (यह निर्दिष्ट करता है कि जावास्क्रिप्ट चालू है)। इसका उपयोग सरल है:

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);

उन ब्राउज़रों के लिए जिन्हें आप json2.js का उपयोग करके इसे कार्यान्वित नहीं कर सकते हैं।

जैसा कि टिप्पणियों में उल्लेख किया गया है, यदि आप पहले से ही jQuery का उपयोग कर रहे हैं, तो $.parseJSON फ़ंक्शन है जो JSON.parse उपलब्ध है या पुराने ब्राउज़र में eval का एक रूप है। हालांकि, यह अतिरिक्त, अनावश्यक जांच करता है जो JSON.parse द्वारा भी किया जाता है, इसलिए सर्वोत्तम प्रदर्शन के लिए मैं इसे इस तरह उपयोग करने की अनुशंसा करता हूं:

var json = '{"result":true,"count":1}',
    obj = JSON && JSON.parse(json) || $.parseJSON(json);

यह सुनिश्चित करेगा कि आप नेटिव पार्सिंग फ़ंक्शन को पास करने से पहले स्ट्रिंग पर jQuery प्रदर्शन JSON.parse जांच करने के बजाए तुरंत मूल JSON.parse उपयोग करें।


सबसे पहले, आपको यह सुनिश्चित करना होगा कि JSON कोड मान्य है।

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

दूसरी तरफ, यदि आप लाइब्रेरी का उपयोग नहीं करना चाहते हैं और आप JSON ऑब्जेक्ट की वैधता के लिए प्रतिबद्ध हो सकते हैं, तो मैं स्ट्रिंग को किसी अज्ञात फ़ंक्शन में लपेटूंगा और eval फ़ंक्शन का उपयोग करूंगा।

यह अनुशंसा नहीं की जाती है कि यदि आप किसी अन्य स्रोत से JSON ऑब्जेक्ट प्राप्त कर रहे हैं जो बिल्कुल विश्वसनीय नहीं है क्योंकि अगर आप चाहते हैं तो eval फ़ंक्शन रीनेज कोड के लिए अनुमति देता है।

Eval फ़ंक्शन का उपयोग करने का एक उदाहरण यहां दिया गया है:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

यदि आप नियंत्रित करते हैं कि कौन सा ब्राउज़र उपयोग किया जा रहा है या आप पुराने ब्राउज़र वाले लोगों से चिंतित नहीं हैं, तो आप हमेशा JSON.parse विधि का उपयोग कर सकते हैं।

यह वास्तव में भविष्य के लिए आदर्श समाधान है।


आप या तो कुछ अन्य उत्तरों के रूप में eval फ़ंक्शन का उपयोग कर सकते हैं। (अतिरिक्त ब्रेसिज़ को न भूलें।) आपको पता चलेगा कि जब आप गहरी खुदाई करते हैं), या बस jQuery फ़ंक्शन parseJSON उपयोग करें:

var response = '{"result":true , "count":1}'; 
var parsedJSON = $.parseJSON(response);

या

आप नीचे दिए गए कोड का उपयोग कर सकते हैं।

var response = '{"result":true , "count":1}';
var jsonObject = JSON.parse(response);

और आप jsonObject.result और jsonObject.count का उपयोग करके फ़ील्ड तक पहुंच सकते हैं।



यदि आप इसे किसी बाहरी साइट से प्राप्त कर रहे हैं तो यह jQuery के getJSON का उपयोग करने में सहायक हो सकता है। यदि यह एक सूची है तो आप इसे $ .each के साथ पुन: सक्रिय कर सकते हैं

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

यदि आप jQuery का उपयोग करते हैं, तो यह आसान है:

var response = '{"result":true,"count":1}';
var obj = $.parseJSON(response);
alert(obj.result); //true
alert(obj.count); //1

यदि आप पुराने ब्राउज़र के लिए JSON 3 का उपयोग करना चाहते हैं, तो आप इसे सशर्त रूप से लोड कर सकते हैं:

<script>
    window.JSON || 
    document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>');
</script>

अब मानक window.JSON ऑब्जेक्ट आपके लिए उपलब्ध है इससे कोई फर्क नहीं पड़ता कि कोई क्लाइंट कौन सा ब्राउज़र चला रहा है।


निम्नलिखित उदाहरण यह स्पष्ट कर देगा:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = JSON.parse(jsontext);
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

या

आप eval फ़ंक्शन का भी उपयोग कर सकते हैं। निम्नलिखित उदाहरण eval फ़ंक्शन का उपयोग कर रहा है:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = eval('(' + jsontext + ')');
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

चूंकि JSON.parse फ़ंक्शन अधिक सुरक्षित है और eval फ़ंक्शन से तेज़ी से निष्पादित करता है, इसलिए मैं आपको JSON.parse फ़ंक्शन का उपयोग करने की सलाह देता हूं।


JSON.parse () किसी JSON ऑब्जेक्ट को फ़ंक्शन में पास किए गए किसी भी JSON स्ट्रिंग को परिवर्तित करता है।

बेहतर समझने के लिए, अपने ब्राउज़र के निरीक्षण तत्व को खोलने के लिए F12 दबाएं, और निम्न आदेश लिखने के लिए कंसोल पर जाएं:

var response = '{"result":true,"count":1}'; // Sample JSON object (string form)
JSON.parse(response); // Converts passed string to a JSON object.

अब आदेश चलाएं:

console.log(JSON.parse(response));

आपको ऑब्जेक्ट के रूप में आउटपुट मिलेगा {परिणाम: सत्य, गिनती: 1}।

उस ऑब्जेक्ट का उपयोग करने के लिए, आप इसे चर के लिए असाइन कर सकते हैं, obj लें obj :

var obj = JSON.parse(response);

अब obj और dot (।) ऑपरेटर का उपयोग करके आप JSON ऑब्जेक्ट के गुणों तक पहुंच सकते हैं।

आदेश चलाने की कोशिश करें

console.log(obj.result);

इस उदाहरण पर एक नज़र डालें:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

जैसा कि आप देख सकते हैं एक हल किए गए वादेgetJoke को वापस कर रहा है (यह लौटने पर हल हो जाता है )। तो आप $ http.get अनुरोध पूरा होने तक प्रतीक्षा करें और फिर console.log (res.joke) निष्पादित किया जाता है (एक सामान्य असीमित प्रवाह के रूप में)।res.data.value

यह plnkr है:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/





javascript json parsing