繁体   English   中英

反序列化时确定适当的结构 Class JSON c#

[英]Determining Appropriate Class Structures when Deserializing JSON c#

每个主题行,我有一个较大的(300,000 多个条目)JSON,我想反序列化...我熟悉 JSONtoSharp 和其他有助于生成类的资源...

鉴于此 JSON 片段(下面的第二个代码块),JSONtoSharp 建议我使用以下结构(参见第一个代码块)

我的问题是我不知道 word3 -> word300,000 是什么,我也不想为每个定义一个 class :)

所以想知道是否有一些我可以使用的通用结构、转换模式?

感谢您的时间和帮助。

 public class Definition
    {
        public string definition { get; set; }
        public string partOfSpeech { get; set; }
        public List<string> synonyms { get; set; }
        public List<string> similarTo { get; set; }
        public List<string> typeOf { get; set; }
    }

    public class Word1
    {
        public List<Definition> definitions { get; set; }
        public int letters { get; set; }
    }

    public class Word2
    {
        public List<Definition> definitions { get; set; }
        public int letters { get; set; }
    }

    public class Root
    {
        public Word1 word1 { get; set; }
        public Word2 word2 { get; set; }
    }
 {
    "word1": {
        "definitions": [
          {
            "definition": "being ten more than fifty",
        "partOfSpeech": "adjective",
        "synonyms": [
          "lx",
          "sixty",
          "threescore"
            ],
        "similarTo": [
          "cardinal"
            ]
      },
      {
            "definition": "the cardinal number that is the product of ten and six",
        "partOfSpeech": "noun",
        "synonyms": [
          "lx",
          "sixty"
        ],
        "typeOf": [
          "large integer"
        ]
      }
    ],
    "letters": 2
    },
  "word2": {
        "definitions": [
          {
            "definition": "being eight more than seventy",
        "partOfSpeech": "adjective",
        "synonyms": [
          "lxxviii",
          "seventy-eight"
            ],
        "similarTo": [
          "cardinal"
            ]
      },
      {
            "definition": "the cardinal number that is the sum of seventy and eight",
        "partOfSpeech": "noun",
        "synonyms": [
          "lxxviii",
          "seventy-eight"
        ],
        "typeOf": [
          "large integer"
        ]
      },
      {
            "definition": "a shellac based phonograph record that played at 78 revolutions per minute",
        "partOfSpeech": "noun",
        "synonyms": [
          "seventy-eight"
        ],
        "typeOf": [
          "disc",
          "disk",
          "platter",
          "record",
          "phonograph record",
          "phonograph recording"
        ]
      }
    ],
    "letters": 2
  }
}

您需要一个不同的结构来包含定义:

public class Definitions {
    public List<Definition> definitions { get; set;}
}

public class Definition {
    public string definition { get; set; }
    public string partOfSpeech { get; set; }
    public List<string> synonyms { get; set; }
    public List<string> similarTo { get; set; }
    public List<string> typeOf { get; set; }
}

然后你可以像这样反序列化它(如果你使用的是 Json.NET)

var definitions = JsonConvert.DeserializeObject<Dictionary<String, Definitions>>(json);

结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM