Java到JSON的转换:JSTL与Methodical(Jackson/Gson)
我是一名熟悉Java的前端开发人员。对于使用有条不紊的转换和JSTL将Java对象转换为JSON,我在性能和开发方面遇到了很大的困难 我知道通过有系统的转换,可以使用一层额外的getter/setter类来实现安全性——而且我有一个非常强烈的预感,那就是它可以更快、更少地占用资源,但我找不到任何证据。我只能找到JSON库之间的比较 我需要详细说明的理由:Java到JSON的转换:JSTL与Methodical(Jackson/Gson),java,json,jstl,jackson,gson,Java,Json,Jstl,Jackson,Gson,我是一名熟悉Java的前端开发人员。对于使用有条不紊的转换和JSTL将Java对象转换为JSON,我在性能和开发方面遇到了很大的困难 我知道通过有系统的转换,可以使用一层额外的getter/setter类来实现安全性——而且我有一个非常强烈的预感,那就是它可以更快、更少地占用资源,但我找不到任何证据。我只能找到JSON库之间的比较 我需要详细说明的理由: 更严格的安全性——我们控制JSP中显示的数据 更快,更少的开销-由于缺乏证据 更容易标准化-缺乏灵活性 下面是我遇到的几个链接——我真的在
- 更严格的安全性——我们控制JSP中显示的数据
- 更快,更少的开销-由于缺乏证据
- 更容易标准化-缺乏灵活性
再一次,我知道这是非常通用的——但我只是在寻找建议和提出的理由,为什么methodical比使用JSTL更好。对于性能,根据大多数公共度量,如基准测试,Jackson是最快的通用库。您可以自己或谷歌轻松地进行测试(Android、JavaSE都有基准测试) Jackson OJM非常简单。给定对象“ob”:
MyObject ob = ...;
ObjectMapper mapper = new ObjectMapper(); // always reuse these, expensive to create
OutputStream out = context.getResponseStream(); // or whateveer
// and then write it out
mapper.writeValue(out, ob);
// or read in:
MyObject ob2 = mapper.readValue(context.getRequestStream(), MyObject.class);
而并发症主要来自对Map
s、List
s(使用TypeReference
)的Java泛型的处理;非标准命名约定(使用注释为Java属性名定义JSON名称)等等
存在教程,例如:
- (Jackson 2.0数据绑定的项目页面,自述)
在替代方案中,GSON也被广泛使用,并且与Jackson一样易于用于数据绑定。此外,DTO与这个概念相关-更相关的谈话-我非常感谢回应-我想我期待更复杂的映射定义,并且正在寻找更复杂的不存在的东西。所以“OJM”只是自动的getter和setter?这是一个起点,在最佳情况下,是的,事情正好匹配。这就是JSON的美妙之处,因为它的信息模型基于对象(而不是关系模型(SQL)或层次结构(XML)),所以它应该以非常简单的方式进行映射。在某些方面还有很多,比如多态类型;或保存对象身份;或者如何支持不可变类型(自定义构造函数)——但是您可以很容易地开始。