对于同一属性具有两种不同数据类型的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进行反序列化,但如果需要,我愿意使用其他工具。
谢谢!
您可以为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);