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

时间:2014-05-24 23:56:24

标签: c# json.net

我正在尝试从包含相应字符串和从父对象继承的值的字符串数组中反序列化对象列表。我有以下删节的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”的竞赛对象和一个包含5个分区对象的列表,每个对象具有sku“1234-SKU”和名称值“Division 1”, “第2分部”,等等。

我最初为JSON序列化程序创建了一个List<string>来填充,然后通过遍历列表创建Division对象。有没有办法正确填充Division对象而无需创建“运营商列表”?理想情况下,我认为我可以通过自定义JsonConverter类来完成此操作,但我不确定如何实现此目的。

1 个答案:

答案 0 :(得分:0)

我是通过为JsonConverter课程创建自定义Competition来实现的。我必须“手动”迭代它,但我可以通过这种方式访问​​整个对象。当我到达分区数组时,我将其反序列化为List<string>>,然后遍历列表以创建Division对象并插入已经解析的Competition.Sku