我有一些我从第三方收到的 JSON 数据,但我不知道如何反序列化:
{
"data": {
"SomeCategory": [
[
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string"
],
[
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string"
]
],
"AnotherRandomCategory": [
[
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string"
],
[
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string"
],
[
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string"
],
[
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string",
"some string"
]
]
}
}
public class ContentClass
{
[JsonProperty("data")]
public DataClass Data { get; set; }
}
public class DataClass
{
[JsonProperty]
public List<CategoryClass> Category { get; set; }
}
public class CategoryClass
{
[JsonProperty]
public List<string> Data { get; set; }
}
直到它反序列化的数据很好。但是我有一个动态命名的类别,我无法在我的模型中设置它,然后是一个未命名的字符串列表。
谁能指出我正确的方向?谢谢
回答1
尝试这个
var content=JsonConvert.DeserializeObject<Content>(json);
public class Content
{
[JsonProperty("data")]
public Dictionary <string, List<List<string>>> Data { get; set; }
}
回答2
大多数 JSON 库(JSON.net、System.Text.Json)都希望 JSON 在 camel 的情况下。并且您的属性名称应与 JSON 属性匹配 - 除了您的 c# 变量应为 Pascal Case。如果它们没有,或者不合适,那么您可以使用 JsonProperty
属性来定义它们。
举个例子:
public class DataClass
{
[JsonProperty("SomeCategory")]
public List<CategoryClass> Category { get; set; }
}
public class ContentClass
{
public Dictionary<string, List<List<string>>> Data
}
无需在此处设置 JsonProperty,因为 data
的格式适合 c# 将其分配给您Class中的变量 Data
。