解析动态JSON

时间:2016-08-23 19:54:52

标签: c# json.net

我正在使用c#和json.net 9.0.1

我有以下json

    {
        "lineups": [
          {
            "55": {
              "id": "55",
              "game_id": "1",
              "player_id": "55",
              "jersey_number": "78"
            },
            "56": {
              "id": "56",
              "game_id": "1",
              "player_id": "56",
              "jersey_number": "77"
            },
            "57": {
              "id": "57",
              "game_id": "1",
              "player_id": "57",
              "jersey_number": "76"
            }
        }
     ]
 }

所有数组项都是Player类型。我如何解析json以便每个项目" 55"," 56"," 57"存储在玩家列表中?列表?

源json无法修改,因为它来自第三方。

更新 将json修改为有效,

1 个答案:

答案 0 :(得分:2)

如果你创建了两个这样的类:

public class Lineup
{
    public List<Dictionary<string,Player>> lineups;
}

public class Player
{
    public string id {get; set; }
    public string game_id { get; set;}
    public string player_id {get;set;}
    public string jersey_number {get;set;}
}

然后你应该(在你修复了无效的JSON之后),能够像这样反序列化:

var l = Newtonsoft.Json.JsonConvert.DeserializeObject<Lineup>(source);

示例:https://dotnetfiddle.net/e7eUUZ

您还可以使用JSON.Net中的各种属性来自定义反序列化。例如,您可能希望使用JsonPropertyAttribute将JSON源中的名称映射到与标准匹配的C#属性名称。