我试图(de)序列化一系列条件,这些条件可以通过AND / OR通过gson连接。
class Condition {
String property;
String operator;
String value;
}
有没有人能想到一种简单的方法来解析" lisp s-expression" -like数组与gson并将它们存储到java对象中?
class MyObject {
List<Condition> conditions;
}
问题:这些条件之间存在AND / OR关系,如下所示。
实施例:
隐含AND:
[condition1, condition2, condition3]
明确的AND:
["AND", condition1, condition2, condition3]
两个表达式在语义上等同于(condition1 AND condition2 AND condition3)
隐含的AND / OR:
[condition1, condition2, ["OR", condition3, condition4]]
明确的AND / OR:
["AND", condition1, condition2, ["OR", condition3, condition4]]
两个表达式在语义上等同于(condition1 AND condition2 AND(condition3 OR condition4))
树状数据类型可能存储解析结果吗? 有没有人能提出更好的运输和储存和/或条件的方法
由于
答案 0 :(得分:1)
我认为将这个json解析到你自己的类中是合适的,而是解析为已经存在于Gson中的JsonElement
类,并且抽象足以完成你的任务(事实上它已经是一棵树了)。 / p>
JsonElement ast = new JsonParser().parse(json);
您可以通过调用ast.isJsonArray()
或使用ast.getAsString()
获取字符串值来检查它是否为数组
这可能不是最佳解决方案,但我认为如果符合您的需求,重复使用已有的API是合理的