【发布时间】:2016-08-26 10:54:18
【问题描述】:
我偶然发现了一个以以下格式输出 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,但我正在努力解决如何动态选择转换器,因为最简单的方法是在属性上放置一个属性,但它不受支持。
一个小例子就好了。
【问题讨论】:
标签: c# json json.net deserialization