通过字符串数组反序列化JSON一对多关系

本文关键字:JSON 一对多 关系 反序列化 数组 字符串 | 更新日期: 2023-09-27 18:05:14

我试图从包含相应字符串和继承自父对象的值的字符串数组反序列化对象列表。我有以下的JSON输出:

{
   "sku":"1234-SKU",
   
   "divisions":[
    "Division 1",
    "Division 2",
    "Division 3",
    "Division 4",
    "Finals Division"
   ]
}

我有一个Compeititon类和Division类,精简如下:

public class Competition
{
    [JsonProperty("sku")]
    public string Sku;
    [JsonProperty("divisions")]
    public virtual List<Division> Divisions;
}
public class Division
{
    // Sku from parent object
    public string CompetitionSku;
    // Would be value from "divisions" array
    public string Name;
}

使用示例JSON输出,我将获得一个Sku为"1234-SKU"的Competition对象和一个包含5个division对象的列表,每个对象的Sku为"1234-SKU",Name值为"division 1"、"division 2",等等。

我最初创建了一个List<string>供JSON序列化器填充,然后通过遍历列表创建Division对象。是否有一种方法可以正确地填充Division对象而不需要创建"运营商列表"?理想情况下,我认为我可以通过自定义JsonConverter类做到这一点,但我不确定如何实现这一点。

通过字符串数组反序列化JSON一对多关系

我通过为Competition类创建自定义JsonConverter来获得它。我必须"手动"遍历它,但我可以通过这种方式访问整个对象。当我到达除数数组时,我将其反序列化为List<string>>,然后遍历列表以创建Division对象并插入已经解析的Competition.Sku