c# - 反序列化未定义列表

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

相似文章

scala - 多个列表的组合 (Scala)

我正在尝试编写一个函数,该函数将多个列表作为输入并返回这些列表之间每个组合的字符串表示形式。样本输入:valintegers=List(1,2,3,4)valcharacters=List('a','...

最新文章