ich auf einen Dienst gestolpert, die JSON in folgendem Format ausgibt:Json.NET Benutzerdefinierte JsonConverter mit Datentypen
{
"Author": "me",
"Version": "1.0.0",
"data.Type1": {
"Children": [
{
"data.Type1": {
"Children": [
{
"data.Type2": {
"name": "John",
"surname": "Doe"
}
}
]
}
},
{
"data.Type3": {
"dob": "1990-01-01"
}
}
]
}
}
Typ Datennamen als Eigenschaftsnamen erhalten bleiben und ihre Werte sind die eigentlichen Objekte. Sie beginnen alle mit einem data.
Präfix.
{ // Root
"Author": "me",
"Version": "1.0.0",
"Children": [ // Type1
{
"Children": [ // Type1
{ // Type2
"Name": "John",
"Surname": "Doe"
}
]
},
{ // Type3
"DoB": "1990-01-01"
}
]
}
mit den folgenden Klassen:
Was ich so etwas wie dies später bekommen möchte
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; }
}
Frage
Wie kann ich das deserialisieren in dem Nachspiel C# -Klassen, unter Berücksichtigung der Datentypen und entfernen sie aus dem Baum?
Ich habe versucht, mit einer benutzerdefinierten JsonConverter
, aber ich kämpfe mit, wie man den Konverter dynamisch wählen, da der einfachste Weg wäre, ein Attribut auf die Eigenschaft zu setzen, aber es wird nicht unterstützt.
Ein kleines Beispiel wäre großartig.
Danke für Ihre Antwort.Ich habe versucht, aber das Problem ist, dass ganze Ebenen entfernt und ersetzt werden müssen, da sie nur als Daten dienen, um zu unterscheiden, welchen Typ sie darstellen, wobei JsonProperty nur zwischen Klassennamen und Json-Eigenschaftsnamen zu mappen ist. –