1

WCF Data Services Toolkitを使用するか、または$formatパラメータをサポートする他の方法を使用するJSONPSupportInspectorAttributeと、少し奇妙なjson応答が返されます。

私のjsonが次のように見えるのはなぜですか?

{
"d" : {
"results": [
{
"__metadata": {

OData.org $formatのjsonが次の場合:

{
"d" : [
{
"__metadata": {

なぜ私のものに余分な「結果」サブセクションがあるのですか?

私のデータサービスは、エンティティフレームワークモデルに直接構築されています。これをなくすには、特定のコンテキストテンプレートを使用する必要がありますか?

4

1 に答える 1

2

これがバージョニングです。V2 では、フィードに追加のメタデータを保存する必要があるサーバー主導のページング機能とインライン カウント機能を追加しました。しかし、V1 のフィードは単なる JSON 配列だったため、そのようなメタデータを配置する場所がありませんでした。

したがって、V2 では、応答のすべてのフィードが「結果」ラッパーでラップされます。つまり、フィードは、配列を持つ「results」というプロパティを持つ JSON オブジェクトです。フィード オブジェクトには追加のプロパティがある場合があります (次のリンク、カウントなど)。

ペイロードのバージョン管理は、そのペイロードの機能に必要な最小バージョンに基づいています。そのため、サービスが V1 よりも高いバージョンのペイロードを必要とするものを使用している場合、ペイロード全体がその高いバージョンを使用して書き込まれます。

これは odata.org サービスでも確認できます - これを試してください: http://services.odata.org/OData/OData.svc/Products ?$inlinecount=allpages&$format=json

応答は V2 になり、結果ラッパーを使用します。

于 2012-04-25T17:50:32.007 に答える