jsonの文字列をgensonでjavaオブジェクトに逆シリアル化しようとしていますが、成功できませんでした。あなたはComplexCondition
がleft
とright
の両方のためにそのメンバーとして別のComplexCondition
またはSimpleCondition
を有していてもよく見ることができるように多面体メンバでJson to Javaを非直列化
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;
}
:私のクラス構造は、このようなものです。私が手JSONはこのようなものです:このJSONで
{
"left": {
"feature":"locality",
"op":"==",
"value":"Chino"
"primitive":9,
},
"joint":"and",
"right": {
"feature":"ch4",
"op":">=",
"value":"1.5",
"primitive":3
}
}
、ComplexCondition
はSimpleCondition
のようleft
とright
の両方を持っています。しかし、私が受け取る一般的なjson文字列は、SimpleCondition
からComplexCondition
の任意のネストレベルまでの範囲のものです。私はjsonの文字列に@class
の値を設定しようとしましたが、まだgensonはそれを逆シリアル化できませんでした。任意のライブラリを使用してjavaにこのjsonをデシリアライズする際の助けに感謝します。
使用するライブラリのJavaクラス名に関するデータがないため、提供されたjsonを任意の汎用ライブラリによって提供されたJavaオブジェクトに逆シリアル化することはできません。おそらくあなたはあなた自身の非直列化を書く必要があります –
あなたの時間のための@Lashane。私はJSONオブジェクトを受け入れる 'SimpleCondition'と' ComplexCondition'の両方でコンストラクタを持つことによって自分自身を逆シリアル化しました。その中のオブジェクトプロパティに基づいて 'ComplexCondition'で再帰呼び出しを行っています。 –