SQL条件的Json表示

时间:2019-03-15 18:19:42

标签: java sql json

是否有将SQL条件转换为Json的方法?我的意思是,我需要写这样的东西:

x > 5 and (y like '%b%' or z > 5) and b = true

像杰森一样?

2 个答案:

答案 0 :(得分:2)

您可以使用jOOQGson。这是一个简单又肮脏的示例,说明如何工作:

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对象的名称(例如operatorconditions)可能随时更改,但对您来说仍然足够。

将来的jOOQ版本可能会为其表达式树提供更稳定的JSON导出: https://github.com/jOOQ/jOOQ/issues/9628

免责声明:我为jOOQ背后的公司工作。

答案 1 :(得分:0)

最近我发现并使用了 JsonLogic。这也是非常好的方法。 https://jsonlogic.com/