JSON सामग्री का सही प्रकार क्या है?


10248

मैं कुछ समय से JSON के साथ खिलवाड़ कर रहा हूं , बस इसे पाठ के रूप में धकेल रहा हूं और इससे किसी को भी चोट नहीं पहुंची है (जो मुझे पता है), लेकिन मैं चीजों को ठीक से करना शुरू करना चाहता हूं।

मैंने JSON सामग्री प्रकार के लिए इतने सारे "मानक" देखे हैं :

application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json

लेकिन कौन सा सही है, या सबसे अच्छा है? मैं इकट्ठा करता हूं कि उनके बीच सुरक्षा और ब्राउज़र समर्थन मुद्दे अलग-अलग हैं।

मुझे पता है कि एक समान प्रश्न है, क्या JSON एक REST एपीआई द्वारा लौटाया जा रहा है? , लेकिन मैं थोड़ा और अधिक लक्षित उत्तर चाहूंगा।

जवाबों:


10303

JSON टेक्स्ट के लिए:

application/json

JSON टेक्स्ट के लिए MIME मीडिया प्रकार है application/json। डिफ़ॉल्ट एन्कोडिंग UTF-8 है। (स्रोत: RFC 4627 )

के लिए JSONP (runnable जावास्क्रिप्ट) कॉलबैक के साथ:

application/javascript

यहां कुछ ब्लॉग पोस्ट हैं जिनका उल्लेख टिप्पणियों में किया गया था जो प्रासंगिक हैं।



क्या मैं Json पाठ को एक साथ फाइल भेज सकता हूं?
ओपीवी

7
Internet Explorer में कभी-कभी अनुप्रयोग / json के साथ समस्याएँ होती हैं - ब्लॉग ऑफ़लाइन है
kudlatiger

6
कल्पना कीजिए कि मेरे पास कोई ऐसा दस्तावेज है, जिसमें सादा पाठ हो। अब वह सादा पाठ ही मान्य JSON के रूप में अच्छी तरह से होता है। क्या फिर मैं इसके माइम-प्रकार के रूप में पाठ / सादे का उपयोग करना गलत होगा? JSON पाठ का उप-प्रकार है। इसलिए मुझे लगता है कि दोनों को अनुमति दी जानी चाहिए। सवाल यह है कि अभ्यास में बेहतर काम करता है। कोडेटोसेर द्वारा टिप्पणी के अनुसार IE को आवेदन / json के साथ समस्या है। लेकिन किसी भी ब्राउजर को टेक्स्ट / प्लेन की समस्या नहीं होनी चाहिए। यदि टेक्स्ट / प्लेन असुरक्षित है तो मैं अपनी वेब-साइट से टेक्स्ट-फाइल्स की सेवा कैसे कर सकता हूं?
पानू तर्क

5
@EugenMihailescu उस पृष्ठ का शीर्षक "MIME प्रकारों की अपूर्ण सूची" है
ओमेगास्टिक

1616

IANA ने JSON के लिए आधिकारिक MIME प्रकार को पंजीकृत किया है application/json

यह पूछे जाने पर कि क्यों नहीं text/json, क्रॉकफोर्ड ने कहा है कि JSON वास्तव में जावास्क्रिप्ट नहीं है और न ही पाठ और साथ ही IANA की application/*तुलना में हाथ लगाने की अधिक संभावना है text/*

और अधिक संसाधनों:


166
बहुत सारा सामान text/*शुरुआती दिनों में सेक्शन में डाल दिया गया जो शायद application/*इन दिनों सेक्शन में रखा जाएगा ।
TRGG

29
@Rohmer - आप "किसी टेक्स्ट एडिटर में कुछ भी" खोल सकते हैं, लेकिन JPEG या Windows .exe या a .zip जैसे द्विआधारी प्रारूप में गैर-मुद्रण योग्य वर्ण होंगे जो वास्तव में कई पाठ संपादकों को तोड़ सकते हैं या अवांछित व्यवहार का कारण बन सकते हैं। cat file.jpgउदाहरण के लिए दौड़ने की कोशिश करें । जबकि कोई भी xml या json फाइल 100% प्रिंट करने योग्य है। इसलिए मुझे लगता है कि Stijn de Witt की बात एक मान्य है, इस तथ्य के बावजूद कि हाँ, अब बदलने में बहुत देर हो चुकी है।
XP84

4
@ XP84 आप किसी भी बाइनरी को HEX रूप में टेक्स्ट एडिटर के साथ खोल सकते हैं। और सभी अलग-अलग वर्ण (उनमें से 16) 100% प्रिंट करने योग्य हैं। तो, उस तर्क से ... क्या सभी बायनेरिज़ टेक्स्ट हैं? Json पाठ नहीं है। Json है (चेतावनी: अनौपचारिक ढीली परिभाषा आगे) एक वस्तु का एक पाठ प्रतिनिधित्व (या वस्तुओं का सरणी)
xDaizu

5
"हेक्स रूप में एक पाठ संपादक" वाक्यांश का कोई अर्थ नहीं है। एक हेक्स संपादक प्रत्येक बाइट को उसके हेक्साडेसिमल मान के रूप में दिखाता है, उदाहरण के लिए, बाइट 1111000 "78" के रूप में। हालांकि कुछ टेक्स्ट एडिटर भी हो सकते हैं, जिनमें हेक्स एडिटिंग मोड भी होता है, लेकिन यह न तो किसी भी चीज़ के लिए सामान्य है और न ही उपयोगी है, लेकिन सबसे तकनीकी काम करने वाले तकनीकी उपयोगकर्ता। पाठ, तुलना द्वारा, एएससीआईआई या यूनिकोड का अर्थ है, और पाठ में, बाइट 1111000 का अर्थ है कम-केस xचरित्र। 78 नहीं। JSON बिल्कुल उसी तरह से है जैसे HTML (टेक्स्ट / HTML)। इसमें केवल पठनीय पाठ वर्ण होते हैं, जिनमें संरचित अर्थ होता है।
XP84

11
मैं Stijn de Witt से सहमत हूं। JSON का मतलब टेक्स्ट-एडिटर के साथ देखा और संपादित किया जाना है।
पानू तर्क


632

बेशक, JSON के लिए सही MIME मीडिया प्रकार है application/json , लेकिन यह महसूस करना आवश्यक है कि आपके एप्लिकेशन में किस प्रकार का डेटा अपेक्षित है।

उदाहरण के लिए, मैं एक्सट्रीम GWT का उपयोग करता हूं और सर्वर प्रतिक्रिया को टेक्स्ट / html के रूप में जाना चाहिए, लेकिन इसमें JSON डेटा शामिल है।

क्लाइंट साइड, एक्सट्रीम GWT फॉर्म श्रोता

uploadForm.getForm().addListener(new FormListenerAdapter()
{
    @Override
    public void onActionFailed(Form form, int httpStatus, String responseText) 
    {
        MessageBox.alert("Error");
    }

    @Override
    public void onActionComplete(Form form, int httpStatus, String responseText) 
    {
        MessageBox.alert("Success");
    }
});

एप्लिकेशन / json प्रतिक्रिया प्रकार का उपयोग करने के मामले में , ब्राउज़र मुझे फ़ाइल को सहेजने का सुझाव देता है।

स्प्रिंग एमवीसी का उपयोग कर सर्वर साइड सोर्स कोड स्निपेट

return new AbstractUrlBasedView() 
{
    @SuppressWarnings("unchecked")
    @Override
    protected void renderMergedOutputModel(Map model, HttpServletRequest request,
                                           HttpServletResponse response) throws Exception 
    {
        response.setContentType("text/html");
        response.getWriter().write(json);
    }
};

7
सर्वर प्रतिक्रिया पाठ / html के रूप में जाना चाहिए। यह एक्सटीजेएस संस्करण के लिए भी सच है।
gbegley

463

JSON:

प्रतिसाद गतिशील रूप से जनरेट किया गया डेटा है, URL में पारित क्वेरी मापदंडों के अनुसार।

उदाहरण:

{ "Name": "Foo", "Id": 1234, "Rank": 7 }

सामग्री प्रकार: application/json


JSON-पी:

JSON पैडिंग के साथ। प्रतिक्रिया JSON डेटा है, जिसके चारों ओर एक फ़ंक्शन कॉल लिपटी है।

उदाहरण:

functionCall({"Name": "Foo", "Id": 1234, "Rank": 7});

सामग्री प्रकार: application/javascript


46
JSON की परिभाषा गलत है। इसे गतिशील रूप से उत्पन्न या क्वेरी पैरामीटर का सम्मान करने की आवश्यकता नहीं है। आप एक स्थिर JSON फ़ाइल की सेवा कर सकते हैं। इसके अलावा, सबसे अधिक उत्तर दिए गए उत्तर में RFC का लिंक है।
स्टाइलफाल

10
इसके अलावा JSONP एक संस्करण को सौंपा गया json डेटा हो सकता है।
जिमी केन

401

यदि आप उबंटू या डेबियन का उपयोग कर रहे हैं और आप अपाचे के माध्यम से .json फ़ाइलों की सेवा करते हैं, तो आप सही सामग्री प्रकार के साथ फ़ाइलों की सेवा करना चाह सकते हैं। मैं यह मुख्य रूप से कर रहा हूं क्योंकि मैं फ़ायरफ़ॉक्स एक्सटेंशन JSONView का उपयोग करना चाहता हूं

अपाचे मॉड्यूल mod_mime इसे आसानी से करने में मदद करेगा। हालांकि, उबंटू के साथ आपको फ़ाइल /etc/mime.types को संपादित करने और लाइन जोड़ने की आवश्यकता है

application/json json

फिर अपाचे को पुनरारंभ करें:

sudo service apache2 restart

44
आमतौर पर एक रीलोड पर्याप्त है (पुनः आरंभ की तुलना में तेज)। इसके अलावा, ध्यान दें कि अब आप "sudo service apache2 reload" कर सकते हैं।
noamtm

19
Ubuntu 12.04 में यह डिफ़ॉल्ट रूप से है
Prizoff

386

यदि आप उस क्लाइंट-साइड से ASP.NET वेब सेवा को कॉल कर रहे हैं जिसे आपको application/jsonकाम करने के लिए उपयोग करना है। मेरा मानना ​​है कि यह jQuery और एक्स्ट्रीम फ्रेमवर्क के लिए समान है ।


20
jQuery कम से कम 'एप्लिकेशन / json' और 'टेक्स्ट / प्लेन' के साथ काम करने लगता है ... मैंने हालांकि अन्य सभी की कोशिश नहीं की है।
नाथन

jQuery के साथ काम करने के लिए सक्षम है content-Type: text/plain, content-Type: application/json, content-Type: application/json; charset=UTF-8, contentType: "application/x-www-form-urlencoded; charset=UTF-8"
Ashraf.Shk786

307

JSON के लिए सही सामग्री प्रकार application/jsonUNLESS है जिसे आप JSONP का उपयोग कर रहे हैं , जिसे पैडिंग के साथ JSON के रूप में भी जाना जाता है, जो वास्तव में जावास्क्रिप्ट है और इसलिए सही सामग्री प्रकार होगा application/javascript


296

इसमें कोई संदेह नहीं है कि JSON प्रतिक्रिया के लिए application/jsonसबसे अच्छा MIME प्रकार है।

लेकिन मुझे कुछ अनुभव था जहां मुझे application/x-javascriptकुछ संपीड़न मुद्दों के कारण उपयोग करना पड़ा । मेरे होस्टिंग वातावरण को GoDaddy के साथ होस्ट किया जाता है । वे मुझे सर्वर कॉन्फ़िगरेशन बदलने की अनुमति नहीं देते हैं। web.configप्रतिक्रियाओं को संपीड़ित करने के लिए मैंने अपनी फ़ाइल में निम्न कोड जोड़ा था ।

<httpCompression>
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>

इसका उपयोग करके .aspx पृष्ठों को जी-जिप के साथ संकुचित किया गया था, लेकिन JSON प्रतिक्रियाएं नहीं थीं। मैंने कहा

<add mimeType="application/json" enabled="true"/>

स्थिर और गतिशील प्रकार वर्गों में। लेकिन यह JSON प्रतिक्रियाओं को बिल्कुल भी संपीड़ित नहीं करता है।

उसके बाद मैंने इस नए जोड़े प्रकार को हटा दिया और जोड़ा

<add mimeType="application/x-javascript" enabled="true"/>

स्थिर और गतिशील दोनों प्रकार के अनुभागों में, और प्रतिक्रिया प्रकार को अंदर बदल दिया

.ashx (एसिंक्रोनस हैंडलर) को

application/x-javascript

और अब मैंने पाया कि मेरे JSON प्रतिक्रियाओं को जी-ज़िप के साथ संकुचित किया गया था। इसलिए मैं व्यक्तिगत रूप से उपयोग करने की सलाह देता हूं

application/x-javascript

केवल तभी यदि आप अपने JSON प्रतिक्रियाओं को साझा होस्टिंग परिवेश पर संपीड़ित करना चाहते हैं । क्योंकि साझा होस्टिंग में, वे आपको IIS कॉन्फ़िगरेशन को बदलने की अनुमति नहीं देते हैं ।


11
"तो मैं व्यक्तिगत रूप से आवेदन / एक्स-जावास्क्रिप्ट का उपयोग करने की सिफारिश कर रहा हूं" जहां यह उत्तर भ्रामक हो जाता है। GoDaddy करता है के संपीड़न की अनुमति देते हैं application/json, मैं अपने साझा होस्टिंग पर यह लाभ उठाने और मैं वैसे भी संपीड़न सक्षम करने के लिए एक अलग सामग्री प्रकार उपयोग करने का सुझाव नहीं होता, यह सिर्फ गलत है। यह किया जा सकता है, लेकिन यह अभी भी गलत होगा। ब्राउज़र समर्थन के लिए विभिन्न सामग्री प्रकारों का उपयोग करना एक बात है, सर्वर-साइड संपीड़न के लिए विभिन्न सामग्री प्रकारों का उपयोग करना एक और है।

269

केवल MIME प्रकार के application/jsonरूप में उपयोग करते समय मेरे पास निम्नलिखित है (नवंबर 2011 तक क्रोम, फ़ायरफ़ॉक्स विथ फायरबग के सबसे हाल के संस्करणों के साथ ):

  • जब JSON सर्वर से लोड किया जाता है तो क्रोम से अधिक चेतावनी नहीं।
  • फायरबग आपको JSON डेटा स्वरूपित दिखाते हुए प्रतिक्रिया में एक टैब जोड़ेगा। यदि MIME प्रकार अलग है, तो यह केवल 'प्रतिसाद सामग्री' के रूप में दिखाई देगा।

244

सामग्री प्रकार के लिए सब कुछ काम नहीं करता है application/json

यदि आप फ़ाइल को अपलोड करने के लिए एक्सट जेएस फॉर्म सबमिट का उपयोग कर रहे हैं , तो ध्यान रखें कि दस्तावेज़ के लिए दस्तावेज़ बनाने के लिए ब्राउज़र द्वारा सर्वर प्रतिक्रिया को पार्स किया जाता है <iframe>

यदि सर्वर रिटर्न ऑब्जेक्ट भेजने के लिए JSON का उपयोग कर रहा है, तो दस्तावेज़ बॉडी में अपरिवर्तित पाठ सम्मिलित करने के लिए ब्राउज़र को बताने के लिए Content-Typeहैडर को सेट किया जाना चाहिए text/html

देखें Ext जे एस 3.4.0 API दस्तावेज़


40
जब भी संभव हो मानकों का पालन न करने वाले उपकरणों से बचा जाना चाहिए; application/jsonप्रति कल्पना का उपयोग करें ।
one.beat.consumer

15
@ one.beat.consumer जबकि यह सच है, यह विशेष रूप से प्रति sejs के लिए विशिष्ट नहीं है। यह एक ब्राउज़र सीमा (या बल्कि, शायद, एक "सुरक्षा उपाय") है।
हेंडी इरावन

7
निश्चित रूप से पाठ / सादे का उपयोग करना बेहतर होगा ताकि यह किसी भी HTML शब्दार्थ को गैर-HTML सामग्री पर लागू न करे? या ब्राउज़रों ने आपको फ्रेम की सामग्री को निकालने की अनुमति नहीं दी है अगर यह कोई डोम नहीं मिला है?
सिंक्रो

5
आगे भ्रम को जोड़ने के लिए: मैं बस डिफ़ॉल्ट ब्राउज़र के साथ सैमसंग गैलेक्सी बीम (Android 2.3) पर एक समान मामला डिबगिंग रहा हूँ, और iframeआग करने लगता है loadके लिए घटना application/javascript, application/x-javascript, text/javascript, text/plain, लेकिन नहीं इसके लिए फायरिंग application/jsonऔर न ही text/html। आज तक, Android <= 2.3 Android बाजार में हिस्सेदारी का लगभग 50% है।
jakub.g

226

JSON एक डोमेन-विशिष्ट भाषा (DSL) और जावास्क्रिप्ट से स्वतंत्र डेटा प्रारूप है, और जैसे कि इसका अपना MIME प्रकार है application/json,। MIME प्रकारों के लिए सम्मान बेशक ग्राहक द्वारा संचालित है, इसलिए text/plainबाइट्स के हस्तांतरण के लिए कर सकते हैं, लेकिन फिर आप विक्रेता एप्लिकेशन डोमेन को अनावश्यक रूप से व्याख्या को आगे बढ़ाएंगे - application/json। आप के माध्यम से XML स्थानांतरण होगा text/plain?

लेकिन ईमानदारी से, MIME प्रकार की आपकी पसंद क्लाइंट को सलाह है कि डेटा की व्याख्या कैसे करें- text/plainया text/HTML(जब यह HTML नहीं है) टाइप इरेज़र की तरह है - यह एक प्रकार की भाषा में आपके ऑब्जेक्ट के प्रकार की सभी वस्तुओं को बनाने के समान ही है।

कोई भी ब्राउज़र रनटाइम मुझे नहीं पता कि JSON दस्तावेज़ लेगा और स्वचालित रूप से इसे बिना किसी हस्तक्षेप के जावास्क्रिप्ट एक्सेस ऑब्जेक्ट के रूप में रनटाइम को उपलब्ध कराएगा, लेकिन अगर आप अपंग ग्राहक के साथ काम कर रहे हैं, तो यह पूरी तरह से अलग मामला है। लेकिन यह पूरी कहानी नहीं है- RESTful JSON सेवाओं में अक्सर जावास्क्रिप्ट रनटाइम नहीं होते हैं, लेकिन यह JSON का एक व्यवहार्य डेटा इंटरचेंज प्रारूप के रूप में उपयोग करना बंद नहीं करता है। अगर क्लाइंट्स अपंग हैं ... तो मैं इसके बजाय एक अजाक्स टेंपलेटिंग सेवा के माध्यम से शायद HTML इंजेक्शन पर विचार करूंगा ।

आवेदन / JSON!


210

यदि आप क्लाइंट-साइड वातावरण में हैं, तो एक अच्छी तरह से समर्थित वेब एप्लिकेशन के लिए क्रॉस-ब्राउज़र समर्थन के बारे में जांच अनिवार्य है।

सही HTTP कंटेंट-टाइप होगा application/json, जैसा कि पहले से ही अन्य लोगों ने भी हाइलाइट किया है, लेकिन कुछ क्लाइंट इसे बहुत अच्छी तरह से हैंडल नहीं करते हैं, यही कारण है कि jQuery डिफ़ॉल्ट की सिफारिश करता है text/html



166

जैसा कि कई अन्य लोगों ने उल्लेख किया है, application/json है, सही उत्तर है।

लेकिन अभी तक जो व्याख्या नहीं की गई है वह वही है जो आपके द्वारा प्रस्तावित अन्य विकल्प हैं।

  • application/x-javascript: जावास्क्रिप्ट के लिए प्रायोगिक MIME प्रकार को application/javascriptमानक बनाया गया था।

  • text/javascript: अब अप्रचलित है। आपको application/javascriptजावास्क्रिप्ट का उपयोग करते समय उपयोग करना चाहिए ।

  • text/x-javascript: उपरोक्त स्थिति के लिए प्रायोगिक MIME प्रकार।

  • text/x-json: JSON के लिए प्रायोगिक MIME प्रकार application/jsonआधिकारिक रूप से पंजीकृत होने से पहले ।

सभी में, जब भी आपको सामग्री प्रकारों के बारे में कोई संदेह है, तो आपको इस लिंक की जांच करनी चाहिए


15
कब text/javascriptपुरानी हो गई? मैं अभी भी <script type="text/javascript" ...टैग के साथ HTML दस्तावेज़ भर रहा हूं ।
ओली

7
यह वास्तव में ब्राउज़रों के लिए कोई फर्क नहीं पड़ता है। यह RFC मानकों के लिए अप्रचलित है: rfc-editor.org/rfc/rfc4329.txt
fcm

16
@ आप सुरक्षित रूप से ड्रॉप कर सकते हैं type="text/javascript"और बस <script>...</script>HTML5 के अनुसार कम से कम करें।
TCB13

149

में JSP , आप पृष्ठ निर्देश में इस का उपयोग कर सकते हैं:

<%@ page language="java" contentType="application/json; charset=UTF-8"
    pageEncoding="UTF-8"%>

सही MIMEJSON के लिए मीडिया प्रकार है application/json। JSP क्लाइंट को प्रतिक्रिया भेजने के लिए इसका उपयोग करेगा।


115

" application/json" सही JSON सामग्री प्रकार है।

def ajaxFindSystems = {
  def result = Systems.list()
  render(contentType:'application/json') {
    results {
      result.each{sys->
        system(id:sys.id, name:sys.name)
      }
    }
    resultset (rows:result.size())
  }
}

112

के लिए IANA पंजीकरणapplication/json का कहना है

इस मीडिया प्रकार का उपयोग करने वाले एप्लिकेशन: JSON का उपयोग इन सभी प्रोग्रामिंग भाषाओं में लिखे गए अनुप्रयोगों के बीच डेटा का आदान-प्रदान करने के लिए किया गया है: ActionScript, C, C #, Clojure, ColdFusion, Common Lisp, E, Erlang, Go, Java, JavaScript, Lua, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Scala, and Scheme।

आप देखेंगे कि IANA.org इन अन्य मीडिया प्रकारों में से किसी को भी सूचीबद्ध नहीं करता है , वास्तव application/javascriptमें अब भी अप्रचलित है। तो application/jsonक्या वास्तव में एकमात्र संभव सही है उत्तर है।

ब्राउज़र समर्थन एक और बात है।

सबसे व्यापक रूप से समर्थित गैर-मानक मीडिया प्रकार text/jsonया हैं text/javascript। लेकिन कुछ बड़े नाम भी इस्तेमाल करते हैं text/plain

इससे भी अधिक विचित्र यह है कि फ़्लिकर द्वारा भेजे गए कंटेंट-टाइप हेडर, जो जेन्सन के रूप में लौटाते हैं text/xml। Google text/javascriptइसका कुछ अजाक्स एपिस के लिए उपयोग करता है ।

उदाहरण:

curl -I "https://ajax.googleapis.com/ajax/services/search/video?v=1.0&q=jsonexample"

आउटपुट: Content-Type: text/javascript

curl -I "https://www.flickr.com/services/rest/?method=flickr.test.echo&format=json&api_key=f82254c1491d894f1204d8408f645a93"

आउटपुट: Content-Type: text/xml


90

सही MIME प्रकार है application/json

परंतु

मैंने कई स्थितियों का अनुभव किया जहां ब्राउज़र प्रकार या फ्रेमवर्क उपयोगकर्ता की आवश्यकता है:

text/html

application/javascript

10
ऐसी स्थिति का उदाहरण?
मार्क अमेरी


66

सामग्री प्रकार शीर्ष लेख 'पर सेट किया जाना चाहिए आवेदन / json ' जब पोस्टिंग। अनुरोध के लिए सुनने वाले सर्वर में " स्वीकार करें = आवेदन / json " शामिल होना चाहिए " । स्प्रिंग एमवीसी में आप इसे इस तरह से कर सकते हैं:

@RequestMapping(value="location", method = RequestMethod.POST, headers = "Accept=application/json")

प्रतिक्रिया में शीर्ष लेख जोड़ें:

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");


59

application/jsonPHP में काम करता है महान एक सरणी या वस्तु डाटा स्टोर करने की।

मैं Google क्लाउड स्टोरेज (GCS) पर JSON में डेटा डालने के लिए इस कोड का उपयोग करता हूं जो कि पारंपरिक रूप से देखा जा सकता है :

$context = stream_context_create([
    'gs' => [
        'acl'=>'public-read', 
        'Content-Type' => 'application/json',
    ]
]);

file_put_contents(
    "gs://BUCKETNAME/FILENAME.json", 
    json_encode((object) $array), 
    false, 
    $context
);

डेटा वापस पाने के लिए सीधे आगे है:

$data = json_decode(file_get_contents("gs://BUCKETNAME/FILENAME.json"));

50

यदि JSON पैडिंग के साथ है तो यह होगा application/jsonp। यदि JSON बिना पैडिंग के है तो यह होगा application/json

दोनों से निपटने के लिए, यह उपयोग करने के लिए एक अच्छा अभ्यास है: 'एप्लीकेशन / जावास्क्रिप्ट' बिना परेशान किए कि यह पैडिंग के साथ है या बिना पैडिंग के।


8
आपके उत्तर का पहला भाग गलत है। "एप्लिकेशन / jsonp" एक वैध MIME प्रकार नहीं है। JSONP की प्रतिक्रिया निकाय सिर्फ जावास्क्रिप्ट है, इसलिए जावास्क्रिप्ट के लिए MIME प्रकारों में से एक का उपयोग करना होगा।
रोब डब्ल्यू


43

जब आप एक JEST संदर्भ में JSON का उपयोग कर रहे हैं, तो स्वीकृत प्रतिक्रियाओं का विस्तार करना ...

उपयोग करने के बारे में एक मजबूत तर्क है application/x-resource+jsonऔर application/x-collection+jsonजब आप REST संसाधनों और संग्रह का प्रतिनिधित्व कर रहे हैं।

और यदि आप jsonapi विनिर्देशन का पालन करने का निर्णय लेते हैं , तो आपको इसका उपयोग करना चाहिएapplication/vnd.api+json , क्योंकि यह दस्तावेज है।

कम से कम एक सार्वभौमिक मानक नहीं है, यह स्पष्ट है कि हस्तांतरित किए जा रहे संसाधनों का जोड़ा अर्थ केवल अधिक स्पष्ट सामग्री-प्रकार का औचित्य साबित करता है application/json

इस तर्क के बाद, अन्य संदर्भ अधिक विशिष्ट सामग्री-प्रकार को सही ठहरा सकते हैं ।


3
application/vnd.api+jsonjson का उपयोग करने के लिए विशेष रूप से एपिस के लिए प्रतीत होता है : एपीआई , अपनी खुद की अपेक्षाओं और प्रारूप के साथ एक बहुत ही संकीर्ण विनिर्देश, मैं इसे किसी भी एपीआई के लिए नहीं समझता हूं जो कि json लौटाता है। कृपया मुझे सही करें अगर मैं गलत हूं
हिलेकस


39

यदि आपको JSON में REST API से डेटा मिलता है, तो आपको सामग्री-प्रकार का उपयोग करना होगा

For JSON data: Content-Type:application/json
For HTML data: Content-Type:text/html,
For XHTML data: Content-Type:application/xhtml+xml,
For XML data: Content-Type:text/xml, application/xml

28

Content-Type: application/json- json
Content-Type: application/javascript- json-P
Content-Type: application/x-javascript- javascript
Content-Type: text/javascript- javascript BUT अप्रचलित, पुराने IE संस्करण html विशेषता के रूप में उपयोग किया जाता है।
Content-Type: text/x-javascript- जावास्क्रिप्ट मीडिया प्रकार लेकिन अप्रचलित
Content-Type: text/x-json- आवेदन से पहले json / json आधिकारिक तौर पर पंजीकृत हो गया।


JSON टेक्स्ट के लिए: एप्लिकेशन / json कंटेंट-टाइप: एप्लीकेशन / json
विकाश चौहान

28

JSON (JavaScript Object Notation) और JSONP ("JSON with padding") प्रारूप बहुत मिलते-जुलते प्रतीत होते हैं और इसलिए यह बहुत भ्रमित करने वाला हो सकता है कि किस MIME प्रकार का उपयोग करना चाहिए। हालांकि प्रारूप समान हैं, फिर भी उनके बीच कुछ सूक्ष्म अंतर हैं।

इसलिए जब भी किसी भी संदेह में, मेरे पास एक बहुत ही सरल दृष्टिकोण है (जो कि ज्यादातर मामलों में पूरी तरह से ठीक काम करता है), अर्थात्, जाने और इसी RFC दस्तावेज़ की जाँच करें।

JSON RFC 4627 (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) के लिए एप्लिकेशन / json मीडिया प्रकार) JSON प्रारूप की विशिष्टताओं है। यह खंड 6 में कहता है, कि JSON टेक्स्ट के लिए MIME मीडिया प्रकार है

application/json.

JSONP JSONP ("JSON with padding") एक ब्राउज़र में JSON से अलग तरीके से संभाला जाता है। JSONP को नियमित जावास्क्रिप्ट स्क्रिप्ट के रूप में माना जाता है और इसलिए इसे जावास्क्रिप्ट के application/javascript,लिए वर्तमान आधिकारिक MIME प्रकार का उपयोग करना चाहिए । हालाँकि, कई मामलों में, text/javascriptMIME प्रकार भी ठीक काम करेगा।

ध्यान दें कि RFC 4329 (स्क्रिप्टिंग मीडिया प्रकार) दस्तावेज़ text/javascriptद्वारा अप्रचलित के रूप में चिह्नित किया गया है और इसके बजाय टाइप का उपयोग करने की सिफारिश की गई है । हालांकि, विरासत के कारणों के कारण, अभी भी व्यापक रूप से उपयोग किया जाता है और इसमें क्रॉस-ब्राउज़र समर्थन है (जो हमेशा माइम प्रकार के साथ मामला नहीं है , खासकर पुराने ब्राउज़रों के साथ)।application/javascripttext/javascriptapplication/javascript

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