将List <javax.persistence.tuple>序列化为JSON

时间:2019-03-07 17:21:50

标签: java json jpa tuples

我正在使用Java 8下在Tomcat 8上运行的JPA(EclipseLink 2.5.2)和Jersey 2.27进行项目开发。目前,我使用映射的实体以及一些简单的列表(不同的值,键值对)检索结果。我已经实现了服务器端的分页,过滤和排序。现在,我正在尝试添加动态聚合数据集的功能。

我已经在SO和其他站点上搜索了序列化从我的条件构建器查询返回的元组列表的最佳方法。到目前为止,我还没有发现任何可以回答我问题的东西。我可以想到三种方法来完成此操作,除非从此处获得一些良好的指导:

  1. 使用反射创建适当的对象并将其提供给我的查询
  2. 一次遍历结果,并将每个元素的我自己的JSON写入StringBuffer
  3. ArrayList<HashMap<String, Object>>,其中使用别名和匹配结果构建HashMap,然后将其添加到列表中,列表按常规方式序列化

因此,如果没有“简单”的方法来序列化元组列表,那么上面哪种方法最有意义?选项3绝对有效,但对我来说就像个麻烦。

1 个答案:

答案 0 :(得分:1)

通常在业务逻辑中使用Reflection听起来不太好,因此您应该取消首选(1.)。 (2.)-当您想使用流object时,逐个序列API听起来不错,在这种情况下,则不行。第三个(3.)看起来很正常,这是一个很好的解决方案,因为它是通用的,并且List<Map<String, Object>>非常适合JSON规范:

  • JSON array-List
  • JSON object-Map
    • property-String
    • any JSON object-Object

您应该尝试在EclipseLink级转换查询结果。请参阅JPA 2.0 native query results as map问题,建议将查询结果转换为ResultType.Map的问题。