在java中反序列化JSON的最快方法是什么?

时间:2013-04-26 07:14:25

标签: java json

我想知道在JAVA中解析json的最快方法是什么?

  • 使用Array内置的库和Object对象
  • 获取默认对象图
  • 使用您自己的java bean获取自定义对象图

由于

3 个答案:

答案 0 :(得分:4)

将解析后的JSON映射到Java bean涉及其他步骤,因此使用原始接口(例如Jackson的流API)会更快。通过这种方式,您还可以阅读,直到获得所需内容并停止解析。

回应@sikorski
来自Jackson Wiki

  

使用Streaming API作为底层JSON构建数据绑定   读/写系统:因此它具有高性能[...],但具有   与纯流/增量相比,一些额外的开销   处理

这几乎是不可避免的。如果您正在编写通用的Jackson解析器,您显然无法在其中使用自定义类型。因此,在您使用通用解析器读取JSON之后,您必须构造自定义类型,因此通用解析器将更快。值得注意的是,这种开销非常小,而且几乎不需要优化。

答案 1 :(得分:4)

嗯,最快最邪恶的一个是Boon Json。我在我的项目中使用它并获得了20倍的改进。我实际上害怕并仔细检查以确定库是否功能正确。谢天谢地,它是:) :) Boon内置了从Java Array / Maps和Custom Beans序列化和反序列化的方法。
更多信息:https://github.com/RichardHightower/boon

答案 2 :(得分:0)

您可以使用json-simple高性能库,它非常易于使用:

  JSONParser parser=new JSONParser();

  System.out.println("=======decode=======");

  String s="[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
  Object obj=parser.parse(s);
  JSONArray array=(JSONArray)obj;
  System.out.println("======the 2nd element of array======");
  System.out.println(array.get(1));
  System.out.println();

  JSONObject obj2=(JSONObject)array.get(1);
  System.out.println("======field \"1\"==========");
  System.out.println(obj2.get("1"));    


  s="{}";
  obj=parser.parse(s);
  System.out.println(obj);

  s="[5,]";
  obj=parser.parse(s);
  System.out.println(obj);

  s="[5,,2]";
  obj=parser.parse(s);
  System.out.println(obj);