当值可以是数组或单个项时,C#DataContractJsonSerializer将失败

Mar*_*rco 5 c# arrays json datacontract serializer

我使用DataContractJsonSerializer将json字符串解析为对象hierarchie.json字符串如下所示:

{
    "groups": [
        {
            "attributes": [
                {
                    "sortOrder": "1",
                    "value": "A"
                },
                {
                    "sortOrder": "2",
                    "value": "B"
                }
            ]
        },
        {
            "attributes": {
                "sortOrder": "1",
                "value": "C"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如您所见,"attributes"的子值可以是数组或单个项.我找到了问题发生的代码部分:

[DataContract]
public class ItemGroup
{
    [DataMember(Name="attributes")]
    public List<DetailItem> Items  { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这适用于第一个,但在第二个上失败.

有没有人为此答案?

谢谢

Dan*_*ott 3

如果您控制 JSON 的创建方式,请确保属性是一个数组,即使它只包含一个元素。然后第二个元素将如下所示并解析良好。

    {
        "attributes": [{
            "sortOrder": "1",
            "value": "C"
        }]
    }
Run Code Online (Sandbox Code Playgroud)