是否有将SQL条件转换为Json的方法?我的意思是,我需要写这样的东西:
x > 5 and (y like '%b%' or z > 5) and b = true
像杰森一样?
答案 0 :(得分:2)
您可以使用jOOQ和Gson。这是一个简单又肮脏的示例,说明如何工作:
new Gson()
.newBuilder()
.setPrettyPrinting()
// Some jOOQ types can be serialised out of the box
// For others, you might have to register adapters explicitly:
.registerTypeHierarchyAdapter(
Field.class,
(JsonSerializer<Field<?>>) (s, t, ctx) -> new JsonPrimitive(s.getName()))
.create()
.toJson(DSL.using(SQLDialect.DEFAULT)
.parser()
.parseCondition("x > 5 and (y like '%b%' or z > 5) and b = true"),
System.out
);
上面的照片:
{
"operator": "AND",
"conditions": [
{
"field1": "X",
"field2": "5",
"comparator": "GREATER"
},
{
"operator": "OR",
"conditions": [
{
"field1": "Y",
"field2": "%b%",
"comparator": "LIKE"
},
{
"field1": "Z",
"field2": "5",
"comparator": "GREATER"
}
]
},
{
"field1": "B",
"field2": "true",
"comparator": "EQUALS"
}
]
}
当然,这不是很向前兼容,因为它使用反射来访问jOOQ的内部。 JSON对象的名称(例如operator
,conditions
)可能随时更改,但对您来说仍然足够。
将来的jOOQ版本可能会为其表达式树提供更稳定的JSON导出: https://github.com/jOOQ/jOOQ/issues/9628
免责声明:我为jOOQ背后的公司工作。
答案 1 :(得分:0)
最近我发现并使用了 JsonLogic。这也是非常好的方法。 https://jsonlogic.com/