sono incappato in un servizio che emette JSON nel seguente formato:Json.NET personalizzato JsonConverter con tipi di dati
{
"Author": "me",
"Version": "1.0.0",
"data.Type1": {
"Children": [
{
"data.Type1": {
"Children": [
{
"data.Type2": {
"name": "John",
"surname": "Doe"
}
}
]
}
},
{
"data.Type3": {
"dob": "1990-01-01"
}
}
]
}
}
nomi dei tipi di dati sono conservati come nomi di proprietà ed i loro valori sono gli oggetti reali. Iniziano tutti con un prefisso data.
.
Quello che mi piacerebbe avere in seguito è qualcosa di simile:
{ // Root
"Author": "me",
"Version": "1.0.0",
"Children": [ // Type1
{
"Children": [ // Type1
{ // Type2
"Name": "John",
"Surname": "Doe"
}
]
},
{ // Type3
"DoB": "1990-01-01"
}
]
}
con le seguenti classi:
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; }
}
Domanda
Come posso deserializzare questo in aggiunta Classi C#, tenendo conto dei tipi di dati e rimuovendoli dall'albero?
Ho provato con una personalizzazione JsonConverter
, ma sto lottando con il modo di scegliere dinamicamente il convertitore, poiché il modo più semplice sarebbe mettere un attributo sulla proprietà, ma non è supportato.
Un piccolo esempio sarebbe fantastico.
Grazie per la risposta.Ho provato, ma il problema è che tutti i livelli devono essere rimossi e sostituiti, perché servono solo come dati per distinguere il tipo che rappresentano, dove JsonProperty è solo per mappare tra il nome della classe e il nome della proprietà json. –