将复数 JSON 转换为 C# 模型
Converting Complex JSON to C# Model
我正在尝试解决我收到的一些复杂问题 JSON 以将其转换为 C# 模型,以便我可以分析和操作数据。我已经尝试通过使用 JSON 将 JSON 转换为 C#,但是当名称是动态的时它不能很好地工作。我想专注于数据。
Item1 和 SubItem1 等都是可变字符串,所以我不能硬编码模型来提取它们,文本只是其中的一个字符串。我遇到的问题是如何将 JSON 转换为可用格式以访问 Item1、SubItem1 和文本值来操作它们的数据。
我已经按照其他地方的建议查看了词典,但我没有运气。
我试过的型号
public class Data
{
public string Status { get; set; }
public ResultInfo ResultInfo { get; set; }
public string Message { get; set; }
public Dictionary<string, SubData> Data {get;set;}
}
public class SubData
{
public Dictionary<string,List<string>> item {get;set;}
}
JSON
{
"Status": "OK",
"ResultInfo": {
"Prev": "PageUPURL",
"Next": "PageDownURL",
"total_count": "37",
"per_page": "3",
"page": "1"
},
"Message": "Ok.",
"Data": {
"Item1": [
{
"SubItem1": [
"Text"
]
}
],
"Item2": [
{
"SubItem2": [
"Text",
"Text",
"Text"
]
}
],
"Item3": [
{
"SubItem3": [
"Text"
]
},
{
"SubItem4": [
"Text"
]
}
]
}
}
如有任何建议、建议或帮助,我们将不胜感激。
更改下行
public Dictionary<string, SubData> Data {get;set;}
作为
public Dictionary<string, Dictionary<string, string[]>[]> Data { get; set; }
对于那些任务,我使用 https://app.quicktype.io .
因为当 属性 名称是数字时它可以很容易地重新连接字典你只需要稍微编辑你的 Json。
并将其传递到工具中。
{
"Status": "OK",
"ResultInfo": {
"Prev": "PageUPURL",
"Next": "PageDownURL",
"total_count": "37",
"per_page": "3",
"page": "1"
},
"Message": "Ok.",
"Data": {
"1": [
{
"1": [
"Text"
]
}
],
"2": [
{
"1": [
"Text",
"Text",
"Text"
]
}
],
"3": [
{
"1": [
"Text"
]
},
{
"2": [
"Text"
]
}
]
}
}
结果class是:
public partial class Root
{
[JsonProperty("Status")]
public string Status { get; set; }
[JsonProperty("ResultInfo")]
public ResultInfo ResultInfo { get; set; }
[JsonProperty("Message")]
public string Message { get; set; }
[JsonProperty("Data")]
public Dictionary<string, List<Dictionary<string, List<string>>>> Data { get; set; }
}
public partial class ResultInfo
{
[JsonProperty("Prev")]
public string Prev { get; set; }
[JsonProperty("Next")]
public string Next { get; set; }
[JsonProperty("total_count")]
[JsonConverter(typeof(ParseStringConverter))]
public long TotalCount { get; set; }
[JsonProperty("per_page")]
[JsonConverter(typeof(ParseStringConverter))]
public long PerPage { get; set; }
[JsonProperty("page")]
[JsonConverter(typeof(ParseStringConverter))]
public long Page { get; set; }
}
在线演示https://dotnetfiddle.net/1j42kR
注意事项:该工具还包括一个从“字符串”到“长”的转换器,适用于 "per_page": "3",
我正在尝试解决我收到的一些复杂问题 JSON 以将其转换为 C# 模型,以便我可以分析和操作数据。我已经尝试通过使用 JSON 将 JSON 转换为 C#,但是当名称是动态的时它不能很好地工作。我想专注于数据。
Item1 和 SubItem1 等都是可变字符串,所以我不能硬编码模型来提取它们,文本只是其中的一个字符串。我遇到的问题是如何将 JSON 转换为可用格式以访问 Item1、SubItem1 和文本值来操作它们的数据。
我已经按照其他地方的建议查看了词典,但我没有运气。
我试过的型号
public class Data
{
public string Status { get; set; }
public ResultInfo ResultInfo { get; set; }
public string Message { get; set; }
public Dictionary<string, SubData> Data {get;set;}
}
public class SubData
{
public Dictionary<string,List<string>> item {get;set;}
}
JSON
{
"Status": "OK",
"ResultInfo": {
"Prev": "PageUPURL",
"Next": "PageDownURL",
"total_count": "37",
"per_page": "3",
"page": "1"
},
"Message": "Ok.",
"Data": {
"Item1": [
{
"SubItem1": [
"Text"
]
}
],
"Item2": [
{
"SubItem2": [
"Text",
"Text",
"Text"
]
}
],
"Item3": [
{
"SubItem3": [
"Text"
]
},
{
"SubItem4": [
"Text"
]
}
]
}
}
如有任何建议、建议或帮助,我们将不胜感激。
更改下行
public Dictionary<string, SubData> Data {get;set;}
作为
public Dictionary<string, Dictionary<string, string[]>[]> Data { get; set; }
对于那些任务,我使用 https://app.quicktype.io .
因为当 属性 名称是数字时它可以很容易地重新连接字典你只需要稍微编辑你的 Json。
并将其传递到工具中。
{
"Status": "OK",
"ResultInfo": {
"Prev": "PageUPURL",
"Next": "PageDownURL",
"total_count": "37",
"per_page": "3",
"page": "1"
},
"Message": "Ok.",
"Data": {
"1": [
{
"1": [
"Text"
]
}
],
"2": [
{
"1": [
"Text",
"Text",
"Text"
]
}
],
"3": [
{
"1": [
"Text"
]
},
{
"2": [
"Text"
]
}
]
}
}
结果class是:
public partial class Root
{
[JsonProperty("Status")]
public string Status { get; set; }
[JsonProperty("ResultInfo")]
public ResultInfo ResultInfo { get; set; }
[JsonProperty("Message")]
public string Message { get; set; }
[JsonProperty("Data")]
public Dictionary<string, List<Dictionary<string, List<string>>>> Data { get; set; }
}
public partial class ResultInfo
{
[JsonProperty("Prev")]
public string Prev { get; set; }
[JsonProperty("Next")]
public string Next { get; set; }
[JsonProperty("total_count")]
[JsonConverter(typeof(ParseStringConverter))]
public long TotalCount { get; set; }
[JsonProperty("per_page")]
[JsonConverter(typeof(ParseStringConverter))]
public long PerPage { get; set; }
[JsonProperty("page")]
[JsonConverter(typeof(ParseStringConverter))]
public long Page { get; set; }
}
在线演示https://dotnetfiddle.net/1j42kR
注意事项:该工具还包括一个从“字符串”到“长”的转换器,适用于 "per_page": "3",