я наткнулся на сервис, который выводит JSON в следующем формате:Json.NET Пользовательское JsonConverter с типами данных
{
"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
, но я борюсь с тем, как динамически выбирать конвертер, поскольку самым простым способом было бы разместить атрибут свойства, но он не поддерживается.
Небольшой пример будет замечательным.
Спасибо вам за ответ.Я попытался, но проблема в том, что все уровни должны быть удалены и заменены, потому что они служат только для того, чтобы различать, какой тип они представляют, где JsonProperty предназначен только для сопоставления между именем класса и именем свойства json. –