1

我正在接收一个类似于以下示例的 JSON 对象。

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

我已经为它建立了一个数据合约(因为我现在只需要访问一个数据字段)就像这样。

[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 回答