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

标签 c# arrays json datacontract serialization

我使用 DataContractJsonSerializer 将 json 字符串解析为对象层次结构。 json 字符串如下所示:

{
    "groups": [
        {
            "attributes": [
                {
                    "sortOrder": "1",
                    "value": "A"
                },
                {
                    "sortOrder": "2",
                    "value": "B"
                }
            ]
        },
        {
            "attributes": {
                "sortOrder": "1",
                "value": "C"
            }
        }
    ]
}

可以看到“attributes”的子值可以是数组,也可以是单项。 我找到了问题发生的代码部分:

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

这对第一个有效,但对第二个无效。

有人回答这个问题吗?

谢谢

最佳答案

如果您控制 JSON 的创建方式,请确保属性是一个数组,即使它只包含一个元素。然后第二个元素将看起来像这样并且可以正常解析。

    {
        "attributes": [{
            "sortOrder": "1",
            "value": "C"
        }]
    }

关于当值可以是数组或单个项目时,C# DataContractJsonSerializer 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647651/

相关文章:

c# - Kendo Grid 内联编辑日期格式问题

javascript - 简化过滤js

ios - json 在 objective-c 中没有正确解析

javascript - 无法将 JSON 对象返回给调用程序

c# - 如何在 C#/Bouncy CaSTLe 中创建 PBKDF2-SHA256 密码哈希

c# - 如何在 C# 中的 ContinueWith 之前使用延迟来执行 Task.ContineWith?

c# - 如何在 C# Windows 应用程序中将数据表导出到 Excel

java - java中for循环数组只处理一个元素?

c++ - 在 xcode C++ (lldb) 中查看动态数组的内容

android - 带有 Json Api 的 ReactNative ListView