Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java到JSON的转换:JSTL与Methodical(Jackson/Gson)_Java_Json_Jstl_Jackson_Gson - Fatal编程技术网

Java到JSON的转换:JSTL与Methodical(Jackson/Gson)

Java到JSON的转换:JSTL与Methodical(Jackson/Gson),java,json,jstl,jackson,gson,Java,Json,Jstl,Jackson,Gson,我是一名熟悉Java的前端开发人员。对于使用有条不紊的转换和JSTL将Java对象转换为JSON,我在性能和开发方面遇到了很大的困难 我知道通过有系统的转换,可以使用一层额外的getter/setter类来实现安全性——而且我有一个非常强烈的预感,那就是它可以更快、更少地占用资源,但我找不到任何证据。我只能找到JSON库之间的比较 我需要详细说明的理由: 更严格的安全性——我们控制JSP中显示的数据 更快,更少的开销-由于缺乏证据 更容易标准化-缺乏灵活性 下面是我遇到的几个链接——我真的在

我是一名熟悉Java的前端开发人员。对于使用有条不紊的转换和JSTL将Java对象转换为JSON,我在性能和开发方面遇到了很大的困难

我知道通过有系统的转换,可以使用一层额外的getter/setter类来实现安全性——而且我有一个非常强烈的预感,那就是它可以更快、更少地占用资源,但我找不到任何证据。我只能找到JSON库之间的比较

我需要详细说明的理由:

  • 更严格的安全性——我们控制JSP中显示的数据
  • 更快,更少的开销-由于缺乏证据
  • 更容易标准化-缺乏灵活性
下面是我遇到的几个链接——我真的在寻找一些可靠的研究,而不是图书馆的比较。另外,如果有人能给我展示一些Jackson提供的OJM映射的可靠示例,那将是非常棒的


再一次,我知道这是非常通用的——但我只是在寻找建议和提出的理由,为什么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数据绑定的项目页面,自述)
大多数主要Java框架正在或将要使用Jackson进行JSON转换:所有JAX-RS实现(Jersey、RESTeasy、CXF)、Restlet(2.0)、Play(2.0)、SpringMVC。由于效率和可扩展性,它已经成为事实上的标准库,后者对于框架来说是最重要的。 基于Jackson的JSON处理也被发现可以与“更快”的二进制格式竞争(这意味着在大多数web服务情况下,改用Thrift、Avro或Protobuf几乎没有什么好处)


在替代方案中,GSON也被广泛使用,并且与Jackson一样易于用于数据绑定。

此外,DTO与这个概念相关-更相关的谈话-我非常感谢回应-我想我期待更复杂的映射定义,并且正在寻找更复杂的不存在的东西。所以“OJM”只是自动的getter和setter?这是一个起点,在最佳情况下,是的,事情正好匹配。这就是JSON的美妙之处,因为它的信息模型基于对象(而不是关系模型(SQL)或层次结构(XML)),所以它应该以非常简单的方式进行映射。在某些方面还有很多,比如多态类型;或保存对象身份;或者如何支持不可变类型(自定义构造函数)——但是您可以很容易地开始。