我想知道在JAVA中解析json的最快方法是什么?
由于
答案 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);