fastjson2是fastjson项目的一次重要升级。目标是为下一个十年提供一个高性能的JSON库。同一组API支持JSON/JSONB协议。JSONPath是一等公民,支持完整和部分解析。支持Java服务端、Android客户端、大数据场景。fastjson2代码:https://github.com/alibaba/fastjson2/releases/tag/2.0.1JSONB格式文档:https://github.com/alibaba/fastjson2/wiki/jsonb_format_cnfastjson2性能测试报告:https://github.com/alibaba/fastjson2/wiki/fastjson_benchmark具体使用1.添加fastjson2依赖Maven。依赖配置如下:com.alibaba.fastjson2fastjson22.0.22。常用的类和方法包com.alibaba.fastjson2;classJSON{//将字符串解析成JSONObjectstaticJSONObjectparseObject(Stringstr);//将字符串解析为JSONArraystaticJSONArrayparseArray(Stringstr);//将字符串解析为Java对象staticTparseObject(byte[]utf8Bytes,ClassobjectClass);//将Java对象输出为字符串staticStringtoJSONString(Objectobject);//将Java对象输出为UT8编码的byte[]staticbyte[]toJSONBytes(Objectobject);}classJSONB{//将jsonb格式的byte[]解析为Java对象staticTparseObject(byte[]jsonbBytes,Class对象C姑娘);//将Java对象以jsonb格式输出到byte[]staticbyte[]toBytes(Objectobject);}classJSONObject{Objectget(Stringkey);intgetIntValue(字符串键);整数getInteger(字符串键);长getLongValue(字符串键);长getLong(字符串键);TgetObject(Stringkey,ClassobjectClass);//将JSONObject对象转换为Java对象TtoJavaObject(ClassobjectClass);}classJSONArray{Objectget(intindex);intgetIntValue(int索引);整数getInteger(int索引);长getLongValue(int索引);长getLong(整数索引);TgetObject(intindex,ClassobjectClass);}classJSONPath{//构造JSONPathstaticJSONPathof(Stringpath);//直接根据路径解析输入,会进行部分解析优化,不会解析全部Objectextract(JSONReaderjsonReader);//根据路径对对象求值Objecteval(ObjectrootObject);}classJSONReader{//根据String输入构造JSONReaderstaticJSONReaderof(Stringstr);//根据ut8编码的字节数组构造JSONReaderinputstaticJSONReaderof(byte[]utf8字节);//根据char[]构造JSONReaderinputstaticJSONReaderof(char[]chars);//根据json格式字节数组构造JSONReaderinputstaticJSONReaderofJSONB(byte[]jsonbBytes)}3.转换字符转换字符串为对象JSON字符串为对象:Stringstr="{\"id\":123}";JSONObjectjsonObject=JSON.parseObject(str);intid=jsonObject.getIntValue("id");JSON字符字符串转数组:Stringstr="[\"id\",123]";JSONArrayjsonArray=JSON.parseArray(str);字符串名称=jsonArray.getString(0);intid=jsonArray.getIntValue(1);4.将对象转换为JSON字符串将对象转换为JSON字符串:classProduct{publicintid;publicStringname;}Productproduct=newProduct();product.id=1001;product.name="DataWorks";JSON.toJSONString(product);上述程序的执行结果如下:{"id":1001,"name":"DataWorks"}将数组转换为JSON字符串:JSON.toJSONString(product,JSONWriter.Feature.BeanToArray);上述程序执行结果如下:[123,"DataWorks"]性能测试报告fastjson2、fastjson1和jacksonusingJMH(JavaMicrobenchmarkHarness)在JDK8和JDK11中的测试数据如下:以上测试数据来自fastjson官网:https://github.com/alibaba/fastjson2/wiki/fastjson_benchmark性能总结fastjson2相比fastjson1200%+的改进,它的目标是成为未来10年的高性能JSON操作工具,但是如果是老项目升级fastjson1到fastjson2,要小心了,因为fastjson2不保证100%兼容fastjson1Reference&Acknowledgmentshttps://github.com/alibaba/fa...https://github.com/alibaba/fa...判断对错靠自己己,听人,得失以数论。公众号:Java面试真题分析面试合集:https://gitee.com/mydb/interview