データ サービス リソースへのアクセス (WCF Data Services) と URI Conventions | Open Data Protocol | ODataOpen Data Protocol | OData を見る限り、クエリストリングに、$format=json を渡すと JSON で結果が取れそうな気がしますよね?
でも、上手く動きませんでした。
WCF Data Services のコード
using System.Data.Services; using System.Data.Services.Common; namespace Hoge { public class MyDataService : DataService<HogeEntities> { public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } } }
他のパラメータ($skipや$top等)は動くんですが、$format だけ結果が返ってきません。
色々調べてみると、JSONP and URL-controlled format support for ADO.NET Data Services - Home を使えば $format=json が使えるようになるみたいです。
というわけで試してみました。ダウンロードした JSONPSupportBehavior.cs をプロジェクトに追加し、WCF Data Services クラスに属性を付与します。
WCF Data Services のコード
using System.Data.Services; using System.Data.Services.Common; namespace Hoge { [DataServicesJSONP.JSONPSupportBehavior] public class MyDataService : DataService<HogeEntities> { public static void InitializeService(DataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; } } }
このファイルを開いてみると、JSON 形式で結果が返ってきています。