35

ODATA が json を返すことができることは知っていますが、そうするために属性またはインターフェイスを使用する必要があるかどうかはわかりません。

http://odata.netflix.com/Catalog/Titles ?$format=JSONのようにしたいのですが、私の odata サービスは JSON を返しません。www.foo.com/service?$format=json のように呼び出すと、XML が返されます。

ODATA で json を返すにはどうすればよいですか?

4

9 に答える 9

26

Fiddler をダウンロードしてインストールします。

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

インストールしたら、それを開き、Fiddler の右側にある [Request Builder] タブをクリックします。

次の URL を挿入します。

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

?$format=JSON は必要ないことに注意してください

「リクエスト ヘッダー」セクションに、次の行を挿入します。

accept: application/json

Fiddler の右上にある大きな [実行] ボタンをクリックします。

Fiddler の左側のリストに追加された要求の結果が表示されます。

リクエストをダブルクリックします。Fiddler の右側が [Inspectors] タブに変わり、リクエストの結果を確認できます。

また、Json を使用しているため、Fiddler 用の Json ビューアー プラグインをダウンロードしてインストールすることをお勧めします。

http://jsonviewer.codeplex.com/

于 2011-05-10T21:06:51.400 に答える
13

新しいバージョンの WCF Data Services はデフォルトで JSON をサポートしており、JSON が必要です。

Accept: application/json;odata=verbose

リクエストヘッダーで。

Accept: application/json

はもはや十分ではありません。詳細はこちら

于 2013-05-10T19:40:22.307 に答える
9

ここでは誰もあなたの質問にとてもきれいに答えていないようです!

HTMLページから、次のJavascript / JQueryコードを使用して、WCFデータサービスがJSON形式でデータを返すようにすることができます。

    <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>
于 2012-01-06T14:12:40.510 に答える
7

リクエストヘッダーセクションに「Accept: application/json」を追加する必要があります。

このリンクをチェックしてください

于 2010-08-12T22:04:32.057 に答える
4

Data Services の ODATA プロバイダーを使用している場合は、提供したサンプルのように URL で指定することにより、ODATA を JSON として簡単に返すことができます - http://odata.netflix.com/Catalog/Titles ?$format=JSON

これを行うには、MSDN http://code.msdn.microsoft.com/DataServicesJSONPからダウンロードした ADO.NET Data Services の JSONp および URL 制御形式のサポートを使用し、以下のように JSONPSupportBehavior デコレーターを DataService クラスに追加します。

[JSONPSupportBehavior]
public class MyDataService : DataService<MyContextType>
{
     ...
于 2012-01-10T20:17:12.930 に答える
2

「...しかし、 http://test.com/feed2/ODataService.svc/results ?$format=JSONを使用すると、「Web ページが見つかりません」と表示されます ...」

Uri に $format=JSON は必要ありません。

「 http://test.com/feed2/ODataService.svc/results」を使用するだけです

(リクエストヘッダーに Accept: application/json を含む)

于 2010-08-28T01:46:39.907 に答える
1

遅い答えですが、OData API をカールさせて結果を json として返す方法を理解するために、過去 1 時間費やしてきました。次のコードは、ドキュメントを json で取得し、ファイルに書き込みます。

-o myfile.html -H "Accept: application/json" http://example.com/api/data?$filter=name eq 'whatever'
于 2013-05-02T22:18:15.950 に答える
1

...小文字を使用してください:

「フォーマット=json」

于 2016-02-14T21:14:31.040 に答える
0

きれいではありませんが、リクエスト文字列で $format を使用せずに 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();  
于 2011-11-09T02:25:28.277 に答える