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

时间:2012-09-18 20:54:52

标签: java json jstl jackson gson

我是熟悉Java的前端开发人员。我正在努力提高性能和时间。使用有条理的转换与JSTL将Java对象转换为JSON的开发利弊。

我知道通过有条不紊的转换,可以使用额外的一层getter / setter类来保证安全性 - 我也有一个非常大的预感,它只是更快,资源更少,但我找不到任何证据。我只能在JSON库之间找到比较。

我需要详细说明的理由:

  • 更严格的安全性 - 我们控制JSP中显示的数据
  • 更快,更少开销 - 由于缺乏证据而受到反击
  • 更容易标准化 - 因缺乏灵活性而受到反击

以下是我遇到的一些链接(下图) - 除了比较库之外,我真的在寻找一些可靠的研究。此外,如果有人能向我展示杰克逊提供的OJM映射的一些可靠的例子 - 那将是非常棒的。

再次,我知道这是如此通用 - 但我只是在寻找建议和提出的原因,为什么有条理的比使用JSTL更好。

1 个答案:

答案 0 :(得分:1)

对于性能,根据大多数公开测量,例如JVM Serializers基准测试,Jackson是常用的快速库。您可以自己轻松测试,或者谷歌搜索(Android,Java SE存在基准)。

杰克逊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的Java泛型,List s(使用TypeReference);非标准命名约定(使用注释来定义Java属性名称的JSON名称)等。

教程存在,例如:

大多数主要Java框架正在使用或将使用Jackson进行JSON转换:所有JAX-RS实现(Jersey,RESTeasy,CXF),Restlet(2.0),Play(2.0),SpringMVC。由于效率和可扩展性,它已成为事实上的标准库,后者对于框架来说是最重要的。 基于Jackson的JSON处理也被发现与“更快”的二进制格式相媲美(这意味着在大多数Web服务案例中切换到使用Thrift,Avro或Protobuf几乎没有收获)。

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