在我的应用程序中,我有很多具有排序和过滤功能的概述(表格)。由于不同的列可以保存不同的值类型(字符串、数字、日期、集合等),因此这些列的过滤器也可以带来不同的值。让我向您展示一些示例(已转换为 JSON,通过 REST 请求发送到服务器):
对于简单的字符串值,如下所示:
{"<column_name>":"<value>"}
对于数字和日期列,过滤器如下所示:
{"<column_name>":[{"operator":"eq","value":"<value>"}]}
{"<column_name>":[{"operator":"eq","value":"<value1>"},{"operator":"gt","value":"<value2>"}]}
对于设置过滤器看起来像
{"<column_name>":["<value1>","<value2>"(,...)]}
现在我需要在一个帮助器类中解析该 JSON,该类将构建WHERE
SQL 查询的子句。在 PHP 中这不是问题,因为我可以调用json_decode
然后简单地检查是否有某个值array
, string
或者其他什么......但是如何在 Java 中简单地做到这一点?
到目前为止我正在使用 Spring 的JsonJsonParser
(我没有发现 Spring 附带的不同解析器之间有任何明显的区别Jackson
, Gson
和别的)。
我正在考虑使用三个不同的构造函数创建一个自己的数据对象类,或者为所有三种可能性创建三个数据对象类,但我不知道如何处理value返回column_name
JSON被解析器解析后...
简单地看一下例子,它给了我三种可能性:
Map<String, String>
Map<String, Map<String, String>>
Map<String, String[]>
有什么想法或线索吗?