如何映射数据协定以引用JSON对象中的正确字段?

时间:2012-12-29 13:23:43

标签: c# json parsing datacontractserializer

我正在收到一个类似于下面示例的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对象是按照this post中所述提取的。

1 个答案:

答案 0 :(得分: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);