[英]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.