Ich versuche, eine JSON-Zeichenfolge zu Java-Objekt mit Genson deserialisieren, konnte aber nicht erfolgreich sein. Meine Klassenstruktur ist wie folgt:deserialize JSON zu Java mit polymorphen Mitgliedern
public class Condition {
}
public class SimpleCondition extends Condition {
String feature;
String op;
String value;
int primitive;
}
public class ComplexCondition extends Condition {
private Condition left;
private String joint;
private Condition right;
}
Wie Sie sehen können ComplexCondition
sowohl für eine weitere ComplexCondition
oder ein SimpleCondition
als Mitglied haben left
und right
. Die json, die ich erhalte, ist wie folgt:
{
"left": {
"feature":"locality",
"op":"==",
"value":"Chino"
"primitive":9,
},
"joint":"and",
"right": {
"feature":"ch4",
"op":">=",
"value":"1.5",
"primitive":3
}
}
In diesem json, ein ComplexCondition
sowohl left
und right
als SimpleCondition
s hat. Aber eine allgemeine JSON-Zeichenfolge, die ich erhalte, kann von SimpleCondition
bis zu einer beliebigen Verschachtelungsebene für ComplexCondition
s reichen. Ich habe versucht, @class
Werte in der JSON-Zeichenfolge, aber immer noch Genson konnte es nicht deserialisieren. Ich freue mich über jede Hilfe bei der Deserialisierung dieses JSON zu Java mit einer beliebigen Bibliothek.
Ich bezweifle, dass JSON von jeder generischen Bibliothek in bereitgestellte Java-Objekte deserialisiert werden kann, da es keine Daten über Java-Klassennamen für die Bibliothek gibt. Wahrscheinlich müssen Sie Ihre eigene Deserialisierung schreiben –
Danke für Ihre Zeit @Lashane. Ich habe die Deserialisierung selbst gemacht, indem ich Konstruktoren in "SimpleCondition" und "ComplexCondition" habe, die ein JSON-Objekt akzeptieren und basierend auf den Objekteigenschaften rekursive Aufrufe in "ComplexCondition" mache. –