Я пытаюсь десериализовать json-строку для java-объекта с помощью genson, но не смог добиться успеха. Моя классовая структура такова:десериализовать Json на Java с членами Polymorphic
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;
}
Как вы можете видеть ComplexCondition
может иметь другую ComplexCondition
или SimpleCondition
в качестве своего члена как для left
и right
. JSON, что я получаю так:
{
"left": {
"feature":"locality",
"op":"==",
"value":"Chino"
"primitive":9,
},
"joint":"and",
"right": {
"feature":"ch4",
"op":">=",
"value":"1.5",
"primitive":3
}
}
В этом формате JSON, ComplexCondition
имеет как left
и right
как SimpleCondition
с. Но общая строка json, которую я получаю, может составлять от SimpleCondition
до любого уровня вложенности для ComplexCondition
s. Я попытался установить значения @class
в строке json, но все же genson не смог его десериализовать. Я ценю любую помощь в десериализации этого json для java, используя любую библиотеку.
Я сомневаюсь, что при условии, что json можно десериализовать в предоставленные java-объекты какой-либо общей библиотекой, так как нет данных о именах классов java для использования библиотеки. Вероятно, вам придется написать свою десериализацию –
Спасибо за ваше время @Lashane. Я сделал десериализацию самостоятельно, имея конструкторы как в «SimpleCondition», так и «ComplexCondition», которые принимают объект JSON и на основе свойств объекта в нем. Я делаю рекурсивные вызовы в «ComplexCondition». –