2010-08-12 13 views
25

मुझे पता है कि ओडीएटीए जेसन वापस कर सकता है लेकिन यह सुनिश्चित नहीं है कि मुझे ऐसा करने के लिए एक विशेषता या इंटरफ़ेस का उपयोग करना है या नहीं।ओडीएटीए से जेसन प्रारूप कैसे वापस करें?

मैं इसे http://odata.netflix.com/Catalog/Titles की तरह करना चाहता हूं? $ प्रारूप = जेएसओएन लेकिन मेरी ओडाटा सेवा जेएसओएन वापस नहीं करती है। जब मैं इसे www.foo.com/service?$format=json की तरह कॉल करता हूं, तो यह सिर्फ एक्सएमएल देता है।

ओडीएटीए के साथ जेसन वापस करने के लिए मुझे क्या करने की ज़रूरत है?

+0

यह एक हैक है, लेकिन अगर आप App_Start के तहत, डिफ़ॉल्ट रूप से JSON वापस जाने के लिए अपने ODataConfig (या WebApiConfig) में चाहते हैं आप कर सकते हैं कोड की इस पंक्ति को अपनी 'रजिस्टर' विधि के नीचे जोड़ें: 'config.Formatters.JsonFormatter.SupportedMediaTypes.Add (नया MediaTypeHeaderValue ("टेक्स्ट/html")); '। – BrainSlugs83

+1

आईडीके लेकिन मुझे 'जेसन' सभी को लोअरकेस में लिखना है और फिर यह काम करता है। शायद CaSeSeNsItIvE? – inetphantom

+0

वही परिणाम यहां, मुझे बस लोअरकेस में 'json' लिखने की आवश्यकता है। वैकल्पिक रूप से, अनुरोध हेडर की स्थापना 'स्वीकार करने के लिए: आवेदन/json' भी –

उत्तर

7

आपको अनुरोध हेडर अनुभाग में "स्वीकार करें: एप्लिकेशन/जेसन" जोड़ने की आवश्यकता है।

चेक बाहर this link

+0

कि समझ में आता है, मैं इसे बाहर इस सप्ताह कोशिश करते हैं और आप लोग जानते हैं दूँगी धन्यवाद – wil

+0

आईएमएचओ यह सही जवाब है। हालांकि, ध्यान दें कि कुछ ओडीटा वेब सेवाएं केवल एटम (एक्सएमएल) का समर्थन करती हैं। – BrainSlugs83

1

"... लेकिन मैं मिलता है" वेबपेज नहीं पाया जा सकता है "का उपयोग http://test.com/feed2/ODataService.svc/results? $ प्रारूप = JSON ..."

आप न $ प्रारूप की जरूरत = में JSON उरी। (: आवेदन/अनुरोध हेडर में json स्वीकार के साथ)

21

डाउनलोड करें और फ़िडलर स्थापित

बस "http://test.com/feed2/ODataService.svc/results"

का उपयोग करें।

http://www.fiddler2.com/fiddler2/

एक बार स्थापित, इसे खोलने "अनुरोध बिल्डर" फ़िडलर के सही पक्ष में स्थित टैब पर क्लिक करें।

सम्मिलित इस URL:

http://test.com/feed2/ODataService.svc/results

ध्यान दें कि आप $ प्रारूप की जरूरत नहीं है = JSON

अनुभाग "अनुरोध हेडर" में, सम्मिलित निम्न पंक्ति:

accept: application/json 

फिडलर के ऊपरी दाएं भाग पर बिग "निष्पादन" बटन दबाएं।

आप फिडलर के बाईं ओर सूची में जोड़े गए अनुरोध के परिणाम देखेंगे।

अनुरोध पर डबल क्लिक करें। फिडलर का दाहिना तरफ "इंस्पेक्टर" टैब में बदल जाएगा जहां आप अपने अनुरोध के परिणाम देख सकते हैं।

इसके अतिरिक्त, क्योंकि आप Json के साथ काम कर रहे हैं, तो आप शायद डाउनलोड करने और फ़िडलर के लिए Json दर्शक प्लगइन स्थापित करना चाहते हैं:

http://jsonviewer.codeplex.com/

+0

फ़िडलर कहते हैं <त्रुटि xmlns = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata "> <संदेश xml: lang =" tr-TR "> असमर्थित मीडिया प्रकार का अनुरोध किया गया। –

+0

मैं डाकिया इस्तेमाल किया, लेकिन क्या मुझे पता करने के लिए आवश्यक अनुरोध हेडर 'स्वीकार किया गया था: आवेदन/json' धन्यवाद! –

0

यह बहुत नहीं है लेकिन यह कैसे मैं $ का उपयोग किए बिना JSON उत्पादन के लिए मजबूर किया है अनुरोध स्ट्रिंग में प्रारूप:

Request r = new Request(Method.GET, "http://XXXXXXX.svc//Login" 
       + "&UserId=" + "'" + "user" + "'" 
       + "&Password=" + "'" + "password" + "'"); 

    ClientInfo ci = r.getClientInfo(); 
    ArrayList<Preference<MediaType>> accepted = new ArrayList<Preference<MediaType>>(); 
    accepted.add(new Preference<MediaType>(MediaType.APPLICATION_JSON)); 
    ci.setAcceptedMediaTypes(accepted); 

    Client client = new Client(Protocol.HTTP); 
    Response response = client.handle(r); 
    Representation output = response.getEntity(); 
9

कोई भी आपके प्रश्न का उत्तर बहुत साफ तरीके से नहीं दे रहा है!

एक HTML पृष्ठ आप JSON प्रारूप में एक WCF डाटा सेवा वापसी डेटा के लिए निम्नलिखित जावास्क्रिप्ट/JQuery कोड का उपयोग कर सकते से;

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
    <script language="javascript" type="text/javascript"> 

     var sURL = "http://YourService.svc/Books(10)"; 

     function testJSONfetch() { 

      $.ajax({ 
       type: "GET", 
       contentType: "application/json; charset=utf-8", 
       datatype: "json", 
       url: sURL, 
       error: bad, 
       success: good, 
       beforeSend: function (XMLHttpRequest) { 
        //Specifying this header ensures that the results will be returned as JSON. 
        XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
       } 
      }); 

     } 

     function good(response) 
     { 

     } 

     function bad(response) 
     { 

     } 

    </script> 
4

आप डेटा सेवाओं से OData प्रदाता आप आसानी से JSON के रूप में OData लौट सकते हैं नमूना दिया था के रूप में URL में निर्दिष्ट द्वारा उपयोग कर रहे हैं? - http://odata.netflix.com/Catalog/Titles $ प्रारूप = JSON

ऐसा करने के लिए यह एमएसडीएन http://code.msdn.microsoft.com/DataServicesJSONP से एडीओ.NET डेटा सेवाओं के डाउनलोड के लिए जेएसओएनपी और यूआरएल नियंत्रित प्रारूप समर्थन का उपयोग करें और JSONPSupportBehavior सजावट को नीचे अपने डेटा सेवा वर्ग में जोड़ें।

[JSONPSupportBehavior] 
public class MyDataService : DataService<MyContextType> 
{ 
    ... 
1

देर जवाब है, लेकिन मैं यह पता लगाने की एपीआई OData कर्ल और json के रूप में परिणाम वापस जाने के लिए कैसे की कोशिश कर पिछले एक घंटे खर्च किया गया है। डिफ़ॉल्ट रूप से WCF डेटा सेवाओं समर्थन JSON के

-o myfile.html -H "Accept: application/json" http://example.com/api/data?$filter=name eq 'whatever' 
11

नए संस्करणों और आप

Accept: application/json;odata=verbose 
अनुरोध हेडर में

होना चाहिए: निम्नलिखित कोड दस्तावेज़ को हासिल करेगा json में है और यह एक फाइल करने के लिए लिखता है।

Accept: application/json 

अब पर्याप्त नहीं है। अधिक जानकारी here

0

... बस लोअर केस अक्षरों का उपयोग करें:

"प्रारूप = json"

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