gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:11:20 25 4
gpt4 key购买 nike

我正在尝试(反)序列化可以通过 gson 通过 AND/OR 连接的条件列表。

class Condition {
String property;
String operator;
String value;
}

有人能想到一种简单的方法来用 gson 解析类似“lisp s-expression”的数组并将它们存储到 java 对象中吗?

class MyObject {
List<Condition> conditions;
}

问题:这些条件之间存在AND/OR关系,如下所示。

示例:

隐式与: [condition1, condition2, condition3]

显式的 AND: ["AND", condition1, condition2, condition3]

这两个表达式在语义上等同于(条件1 AND 条件2 AND 条件3)

隐式与/或: [condition1, condition2, ["OR", condition3, condition4]]

显式的“与/或”: ["AND", condition1, condition2, ["OR", condition3, condition4]]

这两个表达式在语义上等同于(条件1 AND 条件2 AND (条件3 OR 条件4))

也许树状数据类型可以存储解析结果?有谁可以建议一种更好的运输和存储和/或条件的方法

谢谢

最佳答案

我认为不将这个 json 解析为您自己的类,而是解析为 Gson 中已经存在的 JsonElement 类,并且对于您的任务类型来说足够抽象(事实上,它已经是一棵树了)是合适的)。

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

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

这可能不是最好的解决方案,但我认为如果适合您的需求,重用现有的 API 是合理的

关于java - 使用 gson 解析嵌套列表(lisp s 表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com