反序列化未定义列表



我有一些从第三方接收的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; }
}

直到数据反序列化良好。但是,我有一个动态命名的类别,我不能在我的模型中设置,后面是一个未命名的字符串列表。

谁能给我指个正确的方向?由于

试试这个

var content=JsonConvert.DeserializeObject<Content>(json);
public class Content
{
[JsonProperty("data")]
public Dictionary <string, List<List<string>>>  Data { get; set; }
}

大多数JSON库(JSON.net, System.Text.Json)期望JSON是驼峰格式。你的属性名应该与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#的正确格式,可以将其分配到类中的变量Data中。

最新更新