使用gson解析嵌套列表(lisp s表达式)

时间:2016-08-28 19:16:48

标签: java gson

我试图(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))

树状数据类型可能存储解析结果吗? 有没有人能提出更好的运输和储存和/或条件的方法

由于

1 个答案:

答案 0 :(得分:1)

我认为将这个json解析到你自己的类中是合适的,而是解析为已经存在于Gson中的JsonElement类,并且抽象足以完成你的任务(事实上它已经是一棵树了)。 / p>

JsonElement ast = new JsonParser().parse(json);

您可以通过调用ast.isJsonArray()或使用ast.getAsString()获取字符串值来检查它是否为数组

这可能不是最佳解决方案,但我认为如果符合您的需求,重复使用已有的API是合理的