1

オブジェクトを返す API があります。それを と呼びますObjectA。実際には、これが単独で返されることはありません。このデータを運ぶ応答は、次のいずれかの形式になります。

{
   "Status":"Success",
   "ObjectA": {
          "Prop1":"Value",
          "Prop2":"Value"
    }
}

また

{
    "Status":"Success",
    "ObjectAs": [
        {
           // instances of ObjectA
        } 
    ]
}

次に、このオブジェクトを更新します。これは、更新するプロパティを PUT の本体として提供することによって行われます。最初はオブジェクトは全身だと思っていましたが、API チームと話し合ったところ、実際には体の形であるべきだということがわかりました。

{
    "ObjectA": {
        "PropToUpdate":"NewValue"
    }
}

ここでの問題は、私が使用していたことです。

  string body = JsonConvert.SerializeObject(new { PropToUpdate = "SomeValue" });

ただし、これはコンパイルできない次のようなものにする必要があります。

  string body = JsonConvert.SerializeObject(new ObjectA = new { PropToUpdate = "SomeValue" }});

この状況の回避策はありますか? コンパイルしない理由はかなり明白であり、いくつかの回避策を知っています(静的初期化を使用しないか、クライアントでクラス名を変更しないでください)、いずれかを使用せずに望ましい結果を達成する方法はありますか私が言及した回避策?@静的初期化を使用できるようにする文字列リテラルのようなプリコンパイラの方向性はありますか?

4

1 に答える 1

1
JsonConvert.SerializeObject(new { ObjectA = new { PropToUpdate = "SomeValue" } })
// indented, that's

{
  "ObjectA": {
    "PropToUpdate": "SomeValue"
  }
}
于 2013-10-22T18:25:33.627 に答える