对于同一属性具有两种不同数据类型的JSON对象,可以使用相同的反序列化调用进行反序列化吗?

本文关键字:反序列化 可以使 调用 JSON 属性 于同一 两种 数据类型 对象 | 更新日期: 2023-09-27 18:16:22

假设我有以下两个JSON对象,它们根据传入的参数从相同的AJAX调用返回。

第一个返回子属性的字符串数组:

{
    parent: {
        child: [
            "item 1",
            "item 2",
            "item 3",
        ]
    }
}

第二个返回属性的对象数组:

{
    parent: {
        child: [
            {
                "attribute1": "Attribute 1",
                "attribute2": "Attribute 2",
                "attribute3": "Attribute 3"
            },
            {
                "attribute1": "Attribute 1",
                "attribute2": "Attribute 2",
                "attribute3": "Attribute 3"
            },
            {
                "attribute1": "Attribute 1",
                "attribute2": "Attribute 2",
                "attribute3": "Attribute 3"
            },
        ]
    }
}

是否有可能以某种方式将其中任何一个反序列化到相同的模型中?也许有两个不同的属性(如ChildString &ChildObject),根据类型相应地填充?

我目前正在使用Jil进行反序列化,但如果需要,我愿意使用其他工具。

谢谢!

对于同一属性具有两种不同数据类型的JSON对象,可以使用相同的反序列化调用进行反序列化吗?

您可以为child使用通用类型,并根据您的json传递两种不同的类型:

class Parent<T>
{
    public T child { get; set; }
}
class child
{
     string attribute1 { get; set; }
     string attribute2 { get; set; }
     string attribute3 { get; set; }
}
var parentWithList = JsonConvert.DeserializeObject<Parent<List<string>>>(yourFirstJson);
var parentWithSingleChild = JsonConvert.DeserializeObject<Parent<child>(yourSecondJson);