java - 将 List<javax.persistence.Tuple> 序列化为 JSON

标签 java json jpa tuples

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

我在 SO 和其他网站上搜索了序列化从我的条件构建器查询返回的元组列表的最佳方法。到目前为止,我还没有找到任何可以回答我的问题的东西。我可以想到三种方法来做到这一点,除非从这里得到一些好的建议:

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

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

最佳答案

一般使用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 .

关于java - 将 List<javax.persistence.Tuple> 序列化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049584/

相关文章:

java - Netbeans IDE 中企业应用程序项目和 Web 项目应用程序之间的区别

java - Java Swing 应用程序到 OSX 的可移植性

java - 递归删除目录时的延迟

python - 如何解析日期(928142400000+0200)?

javascript - 从显示的 Ajax 请求获取数据

hibernate 。删除更新子列表

java - 将字符串从第一个 Activity 传递到最后一个 Activity ,但在开始最后一个 Activity 之前运行另一个 Activity

Java 对 Web API 的支持

javascript - 如何使用包含数组的 localStorage 加载值?

java - 长属性作为 JPA 实体中的外键