读取JSON数据,没有父根名称?

时间:2016-04-13 16:09:20

标签: c# json

有人可以建议我如何阅读以下JSON数据吗?

[
  {
    "ref": 1,
    "name": "name1",
    "year": 2016
  },
  {
    "ref": 2,
    "name": "name2",
    "year": 2016
  }
]

我试过用JObject.parse阅读,但似乎失败了,因为父母没有名字?

我无法控制所读取数据的格式,因为它来自第三方来源。

2 个答案:

答案 0 :(得分:1)

class Entity
{
    [JsonProperty("ref")]
    public int @ref { get; set; }
    public string name { get; set; }
    public int year { get; set; }
}

var result = JsonConvert.DeserializeObject<List<Entity>>(jsonString);

ref是c#中的保留关键字,因此您需要使用JsonProperty属性绑定到具有不同名称的属性。

答案 1 :(得分:1)

您可以使用JSON.NET中提供的DeserializeObject()方法返回dynamic个对象的集合:

var json = @"[{""ref"": 1, ""name"": ""name1"",""year"": 2016},{""ref"": 2,""name"": ""name"",""year"": 2016}]";

// Build a list to store your objects
var references = JsonConvert.DeserializeObject<dynamic[]>(json);

foreach(dynamic reference in references)
{
    // Each dynamic object in here can be referenced as expected
    // (e.g. reference.name, reference.year and reference["ref"]
    Console.WriteLine("ref: {0}, name: {1}, year: {2}",reference["ref"], reference.name, reference.year);   
}

下面可以看到example of this can be seen here和示例输出;

ref: 1, name: name1, year: 2016
ref: 2, name: name, year: 2016

如果您已经有一个类来表示关联的类型,那么在序列化时可以直接绑定到它:

JsonConvert.DeserializeObject<YourClassName[]>(json);