1

以下の例のような JSON オブジェクトを受け取りました。

{
"name1":{"name1a":"value1a","name1b":"value1b"},
"name2":{"name2a":"value2a","name2b":"value2b"}
}

このようなデータ コントラクトを設定しました (現時点では 1 つのデータ フィールドにのみアクセスする必要があるため)。

[DataContract]
public class MyThingy
{
  [DataMember(Name="name1b")]
  public string Name1b { get; set; }

  public MyThingy() { }

  public MyThingy(String name1b)
  {
    Name1b = name1b;
  }
}

オブジェクトをシリアル化したら、それを出力しようとします (クラスの文字列の説明を取得しているため、これは機能します) Name1b。最後の部分は機能せず、私はnullそこに着いています。私の推測では、データ コントラクトを間違ってマッピングしたに違いありませんが、それを修正する方法がわかりません。

クラスはどのMyThingyように宣言する必要がありますか?

この投稿で説明されているように、JSON オブジェクトが取得されます。

4

1 に答える 1

0

ここではJavaScriptSerializerを使用します。

string json = @"{
    ""name1"":{""name1a"":""value1a"",""name1b"":""value1b""},
    ""name2"":{""name2a"":""value2a"",""name2b"":""value2b""}
    }";

var obj = new JavaScriptSerializer()
          .Deserialize<Dictionary<string, Dictionary<string, string>>>(json);

Console.WriteLine(obj["name1"]["name1b"]);

Json.Netdynamic一緒に使用することもできます

dynamic  obj = JsonConvert.DeserializeObject(json);

Console.WriteLine(obj.name1.name1b);
于 2012-12-29T13:59:26.400 に答える