2009-07-21 28 views
15

क्या आप कृपया मुझे बता सकते हैं, JSON का उपयोग क्या है (जावास्क्रिप्ट और PHP में)। जब हमें JSON विधि की आवश्यकता होती है।जहां हम JSON का उपयोग करते हैं?

मैंने निम्नलिखित लिंक से पढ़ा लेकिन मुझे किसी भी परियोजना पर JSON कार्यान्वयन के बारे में कोई जानकारी नहीं मिली।

http://www.json.org/js.html

+3

समुदाय विकी – SilentGhost

+1

होना चाहिए ... अगर यह 'नहीं था कुछ बार एक डुप्लिकेट टी – annakata

उत्तर

21

JSON एक हल्के वजन डेटा विनिमय प्रारूप (एक आहार पर एक्सएमएल के रूप में यह के बारे में सोच) है। असल में कोई भी स्थान जहां आप डेटा को क्रमबद्ध करने के लिए एक्सएमएल का उपयोग कर सकते हैं, आप इसके बजाय JSON का उपयोग कर सकते हैं।

3

JSON केवल एक डेटा प्रारूप है। यदि आपको उस डेटा को स्टोर या ट्रांसपोर्ट करने की आवश्यकता है जो नाम-मूल्य जोड़े की नेस्टेड श्रृंखला से अधिक जटिल नहीं है, जिसका मान JSON मानक द्वारा समर्थित है, तो JSON आपके प्रोजेक्ट के लिए सही डेटा प्रारूप हो सकता है।

तो अपनी परियोजना डेटा भंडारण/परिवहन की जरूरत थी, इसके नाम के बावजूद)

8

, JSON प्रारूप का प्राथमिक उपयोग करता है में से एक AJAX वेब विकास में हालांकि निश्चित रूप से न केवल एक) है (। पारंपरिक प्रकाश पर इसे हल्के वजन वाले वाक्यविन्यास के लिए अक्सर पसंद किया जाता है।

2

जेएसओएन अपेक्षाकृत हल्के वजन वाले डेटा एक्सचेंज प्रारूप (कम से कम जब एक्सएमएल या एचटीएमएल की तुलना में) होता है और वेब क्लाइंट और वेब सर्वर/सेवा के बीच छोटी मात्रा में डेटा का आदान-प्रदान करते समय सबसे उपयोगी होता है।

हालांकि, डेटा की बड़ी सूचियों का आदान-प्रदान करने के लिए यह सबसे अच्छा विकल्प नहीं है (हालांकि एक्सएमएल से काफी बेहतर है), इसके ओवरहेड प्रति पंक्ति के आदान-प्रदान के कारण।

4

JSON डेटा के संचरण में उपयोग किया जाने वाला डेटा प्रारूप है। इसका मुख्य रूप से जावास्क्रिप्ट AJAX कॉल में उपयोग किया जाता है।

JSON की संरचना बस ब्रैकेट नाम है: मूल्य जोड़े। इसकी कॉम्पैक्ट प्रकृति और सादगी के कारण यह अपेक्षाकृत छोटे डेटासेट और चीजों के संचरण के लिए एक बेहतर संरचना है जिसे नाम में समूहीकृत किया जा सकता है: मूल्य जोड़े।

उदाहरण के लिए:

एक prototype.js अजाक्स कॉल रूपांतरित होने वाले और प्राप्त करने JSON डेटा:

function my_php_handler() 
{ 
    #parse POST data 
    $name = $_POST["name"]; 
    $myarray_data = $_POST["myarray_data"]; 

    #transform the data in some way 

    #return encoded string 
    echo json_encode($results); 
} 
:

my_prototype_class = Class.create(); 
my_prototype_class.prototype = { 
    initialize: function() { 
     this.myarray = new Array(); 
     //do initialization 
    },  
    my_function: function(direction){ 
     new Ajax.Request('/my/url.php', 
      {  
       method: 'post', 
       parameters: { name: value, 
           myarray_data: this.myarray.toJSON() }, 
       onSuccess: function(transport) { 
        var response = transport.responseText.evalJSON(); 
        //handle response 
       }, 
       onFailure: function(){ 
        //handle failure 
       }  
      }); 
    } 
} 
Event.observe(window, "load", function(){new my_prototype_class();}, false); 

और का उपयोग कर PHP आप कुछ इस तरह से अनुरोध का प्रबंध था

कुछ ऐसा:

[{"myarray": [], "name": value}] 

http अनुरोध/प्रतिक्रिया में पारित हो जाएगा। इस प्रारूप में डेटा को JSON कहा जाता है।

1

जेएसओएन ज्यादातर एजेक्स वेब ऐप्स में एक्सएमएल के लिए हल्के और अधिक मानव पठनीय विकल्प के रूप में उपयोग किया जाता है।

2

यदि आप जावास्क्रिप्ट कोड के साथ पुनर्प्राप्त डेटा (यानी अपने ब्राउज़र में एक अजाक्स कॉल के माध्यम से) में हेरफेर करने की आवश्यकता है तो मैं JSON का उपयोग करने का सुझाव दूंगा। ऐसे मामले में JSON बहुत आरामदायक है क्योंकि आप इसे सीधे अपनी जावास्क्रिप्ट में लोड कर सकते हैं और इसका उपयोग कर सकते हैं (इसलिए जावा स्क्रिप्ट ऑब्जेक्ट नोटेशन => JSON)। इसे जावास्क्रिप्ट ऑब्जेक्ट्स में JSON स्ट्रिंग का deserialization कहा जाता है। यह eval() का उपयोग करके किया जा सकता है, हालांकि - मैंने पढ़ा - कुछ सुरक्षा मुद्दों को उत्पन्न करता है, इसलिए कुछ JSON (डी) धारावाहिक का उपयोग किया जाना चाहिए।

page आप का उल्लेख आप की तरह

{"bindings": [ 
     {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, 
     {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
     {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} 
    ] 
} 

जो नेटवर्क पर भेज दिया जाता है, ग्राहक जहां उसके बाद एक कॉलबैक की तरह शुरू हो जाती है पर अजाक्स कॉल के कुछ लोगों द्वारा शुरू की कुछ JSON स्ट्रिंग है पर वर्णित (यानी के रूप में नेट)

function onSuccess(result){ 
    var myObj = Sys.Serialization.JavaScriptSerializer.deserialize(result, false); 
    myObj.bindings[0].ircEvent... 
} 

लाभ जब जावास्क्रिप्ट का उपयोग, ज्यादातर अजाक्स के साथ वेब विकास पर सिर्फ आसान (डी) क्रमबद्धता एक साथ है। अन्यथा मैं वास्तव में जेएसओएन का उपयोग नहीं करता बल्कि बदले में एक्सएमएल पर भरोसा करता हूं क्योंकि डेस्कटॉप ऐप्स के लिए वास्तव में शक्तिशाली पार्सिंग लाइब्रेरी हैं।

2

अन्य सभी उत्तरों बहुत अच्छे हैं, लेकिन शायद आपके विशिष्ट मामले (जावास्क्रिप्ट + PHP) के लिए सबसे सरल स्पष्टीकरण: JSON एक जावास्क्रिप्ट ऑब्जेक्ट को PHP सहयोगी सरणी या ऑब्जेक्ट में अनुवाद करने का सबसे आसान तरीका है (और इसके विपरीत)

चीजों के PHP पक्ष के लिए json_encode() और json_decode() पर एक नज़र डालें। जावास्क्रिप्ट पक्ष पर, एक साधारण eval() एक JSON स्ट्रिंग से ऑब्जेक्ट प्राप्त करने का सबसे आसान (लेकिन कम से कम सुरक्षित!) तरीका है, लेकिन आपकी पसंद की लाइब्रेरी में निश्चित रूप से आपके लिए इसका ख्याल रखने के लिए कार्य होंगे, और यदि आप नए ब्राउज़र को लक्षित कर रहे हैं, आप ECMAScript 5 JSON object का उपयोग कर सकते हैं।

3

जेएसओएन जावास्क्रिप्ट और PHP के बीच डेटा आगे और आगे जाने के लिए एक महान प्रारूप है। मेरा सबसे आम उपयोग स्टेटस संदेशों के लिए है।

यहां एक छोटी PHP स्क्रिप्ट के लिए अजाक्स क्वेरी करने के लिए कुछ जावास्क्रिप्ट है।

$jsonHeader = array(); 

    if($_REQUEST['param1']) 
    { 
     echo '<p>You passed ' . $_REQUEST['param1'] . '</p>'; 
     $jsonHeader['status'] = 'Success'; 
    }else 
    { 
     $jsonHeader['status'] = 'Failed because the request was invalid'; 
    } 

    if(is_array($jsonHeader) and sizeof($jsonHeader) > 0) 
    { 
     header('X-JSON: (' . json_encode($jsonHeader) . ')'); 
    } 

साफ बात यह है कि प्रोटोटाइप स्वचालित रूप से डीकोड एक्स JSON हैडर कि PHP पैदा कर रही है है:

new Ajax.Request('dostuff.php', { 
     method: 'get', 
     parameters: {'param1': 'this is param 1'}, 
     onSuccess: function(response, jsonHeader){ 
      if(jsonHeader['status'] == 'Success'){ 
      //Everything is OK, do stuff 
      }else{ 
      alert(jsonHeader['status']); 
      } 
     }, 
     onFailure: function(){ 
      alert('Fail!'); 
     } 
    }); 

फिर, पीएचपी पक्ष पर, आप कुछ इस तरह हो सकता है।

अंतिम परिणाम है कि जावास्क्रिप्ट में onSuccess विधि के jsonHeader तर्क स्वचालित रूप से एक सरणी PHP में $ jsonHeader सरणी के रूप में ही डेटा उपलब्ध न में बदल जाता है है

संबंधित मुद्दे