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

C# 通过字符串数组反序列化JSON一对多关系,c#,json.net,C#,Json.net,我正在尝试从字符串数组中反序列化对象列表,该字符串数组包含相应的字符串和从父对象继承的值。我有以下简略的JSON输出: {    "sku":"1234-SKU",        "divisions":[     "Division 1",     "Division 2",     "Division 3",     "Division 4",     "Finals Division"    ] } 我有一个competition班和一个Division班,其节选如下: public c

我正在尝试从字符串数组中反序列化对象列表,该字符串数组包含相应的字符串和从父对象继承的值。我有以下简略的JSON输出:

{
   "sku":"1234-SKU",
   
   "divisions":[
    "Division 1",
    "Division 2",
    "Division 3",
    "Division 4",
    "Finals Division"
   ]
}
我有一个
competition
班和一个
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;
}
公开课竞赛
{
[JsonProperty(“sku”)]
公共字符串Sku;
[JsonProperty(“部门”)]
公共虚拟名单司;
}
公共课组
{
//来自父对象的Sku
公开弦乐比赛;
//将是“分区”数组中的值
公共字符串名称;
}
使用示例JSON输出,我将得到一个Sku为“1234-Sku”的竞争对象和一个包含5个分区对象的列表,每个分区对象都有一个Sku“1234-Sku”,名称值为“分区1”、“分区2”,以此类推


我最初为JSON序列化程序创建了一个
列表
,然后通过迭代列表创建分割对象。是否有一种无需创建“承运商列表”即可正确填充分割对象的方法?理想情况下,我想我可以通过一个定制的
JsonConverter
类来实现这一点,但我不确定如何实现这一点。

我是通过为
竞赛
类创建一个定制的
JsonConverter
来实现的。我必须“手动”遍历它,但我可以通过这种方式访问整个对象。当我到达分区数组时,我将其反序列化为一个
列表>
,然后在列表中迭代创建
分区
对象,并插入已解析的
竞争。Sku

似乎是您想要的。@metacube这很接近,除非我很傻,否则这不是我的情况。JSON输出中“divisions”列表中唯一的数据是进入Division对象的Name值,我需要将“sku”值传递给Division对象。。是的,我明白了。您没有包装器,因此可能需要您提到的自定义代码。@metacubed这就是我的想法。我尝试过使用
JsonConverter
,但我没有找到任何能让我走上正轨的东西——你知道什么能让我开始吗?我可以反序列化列表,但读卡器只能向前访问,因此我无法回溯并获取Sku值。我有没有办法“重启”JsonReader?或者,原始Json字符串是否隐藏在序列化程序或读取器中?我找不到它。