我偶然发现了一个以以下格式输出JSON的服务:
{
"Author": "me",
"Version": "1.0.0",
"data.Type1": {
"Children": [
{
"data.Type1": {
"Children": [
{
"data.Type2": {
"name": "John",
"surname": "Doe"
}
}
]
}
},
{
"data.Type3": {
"dob": "1990-01-01"
}
}
]
}
}
数据类型名称被保留为属性名称,它们的值是实际对象。它们都以data.
前缀开头。
我想要得到的结果如下所示:
{ // Root
"Author": "me",
"Version": "1.0.0",
"Children": [ // Type1
{
"Children": [ // Type1
{ // Type2
"Name": "John",
"Surname": "Doe"
}
]
},
{ // Type3
"DoB": "1990-01-01"
}
]
}
具有以下类:
class Type1 {
ICollection<object> Children { get; set; }
}
class Type2 {
public string Name { get; set; }
public string Surname { get; set; }
}
class Type3 {
public DateTime DoB { get; set; }
}
class Root
{
public string Author { get; set; }
public string Version { get; set; }
public Type1 Children { get; set; }
}
问题
如何将此反序列化为添加的C#类,考虑数据类型并将其从树中删除?
我尝试使用自定义的JsonConverter
,但是我不知道如何动态选择转换器,因为最简单的方法是在属性上放置一个属性,但是这不受支持。
提供一个小例子会很好。