《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个阿里开源的高性能的JSON库FASTJSON2。 FASTJSON2是FASTJSON项目的重要升级,目标是为下一个十年提供一个高性能的JSON库。通过同一套API,支持JSONJSONB两种协议支持全量解析和部分解析支持Java服务端、客户端Android、大数据场景支持Kotlin支持Android(2。0。3。android)支持GraalNativeImage(2。0。3。graal) 使用准备 1添加依赖 Maven:dependencygroupIdcom。alibaba。fastjson2groupIdfastjson2artifactIdversion2。0。3versiondependency Gradle:dependencies{implementationcom。alibaba。fastjson2:fastjson2:2。0。3} 2其他模块Fastjsonv1兼容模块 如果原来使用fastjson1。2。x版本,可以使用兼容包,兼容包不能保证100兼容,请仔细测试验证,发现问题请及时反馈。 Maven:dependencygroupIdcom。alibabagroupIdfastjsonartifactIdversion2。0。3versiondependency Gradle:dependencies{implementationcom。alibaba:fastjson:2。0。3}Kotlin集成模块 如果项目使用Kotlin,可以使用fastjsonkotlin模块,使用方式上采用kotlin的特性。 Maven:dependencygroupIdcom。alibaba。fastjson2groupIdfastjson2kotlinartifactIdversion2。0。3versiondependency Gradle:dependencies{implementation(com。alibaba。fastjson2:fastjson2kotlin:2。0。3)} 简单使用 在fastjsonv2中,package和1。x不一样,是com。alibaba。fastjson2。如果你之前用的是fastjson1,大多数情况直接更包名就即可。 1将JSON解析为JSONObjectStringtext。。。;JSONObjectdataJSON。parseObject(text);byte〔〕bytes。。。;JSONObjectdataJSON。parseObject(bytes); 2将JSON解析为JSONArrayStringtext。。。;JSONArraydataJSON。parseArray(text); 3将JSON解析为Java对象Stringtext。。。;UserdataJSON。parseObject(text,User。class); 4将Java对象序列化为JSONObjectdata。。。;StringtextJSON。toJSONString(data);byte〔〕textJSON。toJSONBytes(data); 5使用JSONObject、JSONArray 获取简单属性Stringtext{id:2,name:fastjson2};JSONObjectobjJSON。parseObject(text);intidobj。getIntValue(id);Stringnameobj。getString(name); 读取JavaBeanJSONArrayarray。。。JSONObjectobj。。。Useruserarray。getObject(0,User。class);Useruserobj。getObject(key,User。class); 转为JavaBeanJSONArrayarray。。。JSONObjectobj。。。Useruserobj。toJavaObject(User。class);ListUserusersarray。toJavaList(User。class); 6将JavaBean对象序列化为JSONclassUser{publicintid;publicStringname;}UserusernewUser();user。id2;user。nameFastJson2;StringtextJSON。toJSONString(user);byte〔〕bytesJSON。toJSONBytes(user); 序列化结果{id:2,name:FastJson2} 进阶使用 1使用JSONB 将JavaBean对象序列化JSONBUseruser。。。;byte〔〕bytesJSONB。toBytes(user);byte〔〕bytesJSONB。toBytes(user,JSONWriter。Feature。BeanToArray); 将JSONB数据解析为JavaBeanbyte〔〕bytes。。。UseruserJSONB。parseObject(bytes,User。class);UseruserJSONB。parseObject(bytes,User。class,JSONReader。Feature。SupportBeanArrayMapping); 2使用JSONPath 使用JSONPath读取部分数据Stringtext。。。;JSONPathpathJSONPath。of(。id);缓存起来重复使用能提升性能JSONReaderparserJSONReader。of(text);Objectresultpath。extract(parser); 使用JSONPath读取部分byte〔〕的数据byte〔〕bytes。。。;JSONPathpathJSONPath。of(。id);缓存起来重复使用能提升性能JSONReaderparserJSONReader。of(bytes);Objectresultpath。extract(parser); 使用JSONPath读取部分byte〔〕的数据byte〔〕bytes。。。;JSONPathpathJSONPath。of(。id);缓存起来重复使用能提升性能JSONReaderparserJSONReader。ofJSONB(bytes);注意这里使用ofJSONB方法Objectresultpath。extract(parser); END 开源协议:Apache2。0 开源地址:https:github。comalibabafastjson2