ODATAはjsonを返すことができますが、属性またはインターフェイスを使用して返す必要があるかどうかはわかりません。
http://odata.netflix.com/Catalog/Titles ?$ format = JSONのようにしますが、odataサービスはJSONを返しません。 www.foo.com/service?$format=jsonのように呼び出すと、XMLを返すだけです。
ODATAでjsonを返すにはどうすればよいですか?
Fiddlerをダウンロードしてインストールします。
http://www.fiddler2.com/fiddler2/
インストールしたら、それを開き、Fiddlerの右側にある[リクエストビルダー]タブをクリックします。
次のURLを挿入:
http://test.com/feed2/ODataService.svc/results
?$ format = JSONは必要ないことに注意してください
[リクエストヘッダー]セクションで、次の行を挿入します。
accept: application/json
Fiddlerの右上にある大きな「実行」ボタンを押します。
Fiddlerの左側のリストに追加されたリクエストの結果が表示されます。
リクエストをダブルクリックします。 Fiddlerの右側が[インスペクター]タブに変わり、リクエストの結果を確認できます。
また、Jsonで作業しているので、おそらくFiddlerのJsonビューアプラグインをダウンロードしてインストールする必要があります。
WCF Data Servicesの新しいバージョンはデフォルトでJSONをサポートしているため、
Accept: application/json;odata=verbose
要求ヘッダー内。
Accept: application/json
もはや十分ではありません。詳細 こちら 。
ここでは、誰もあなたの質問にとてもきれいに答えているわけではないようです!
HTMLページから、次のJavascript/JQueryコードを使用して、WCF Data Serviceから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>
リクエストヘッダーセクションに「Accept:application/json」を追加する必要があります。
チェックアウト このリンク
Data ServicesのODATAプロバイダーを使用している場合は、指定したサンプルのようにURLで指定することで、ODATAをJSONとして簡単に返すことができます- http://odata.netflix.com/Catalog/Titles =?$ format = JSON
これを行うには、MSDNからADO.NET Data ServicesをダウンロードするためのJSONpおよびURL制御形式のサポートを使用します http://code.msdn.Microsoft.com/DataServicesJSONP を使用し、DataServiceクラスにJSONPSupportBehaviorデコレーターを追加します以下のように。
[JSONPSupportBehavior]
public class MyDataService : DataService<MyContextType>
{
...
「... http://test.com/feed2/ODataService.svc/results ?$ format = JSON ...を使用して「Webページが見つかりません」と表示される」
uriに$ format = JSONは必要ありません。
「 http://test.com/feed2/ODataService.svc/results 」を使用するだけです
(要求ヘッダーにAccept:application/jsonが含まれる)
遅い答えですが、OData APIをカールし、結果をjsonとして返す方法を見つけようとして最後の1時間を費やしてきました。次のコードは、jsonでドキュメントを取得し、ファイルに書き込みます。
-o myfile.html -H "Accept: application/json" http://example.com/api/data?$filter=name eq 'whatever'
きれいではありませんが、これはリクエスト文字列で$ 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();
...小文字を使用します。
「format = json」