问题:如何解析JSON数据,有哪些方法?这个问题是我们作为程序员几乎每天都要做的一个操作,那么它有多少种方法呢,下面就来说说吧。四种分析方法官方分析GoogleGson分析AlibabaFastJson分析Jackson分析案例实践这里只讨论对象和json是如何相互转换的。这里我们先创建一个Maven项目,方便引入依赖,通过单元测试来实际测试我们不同的解析方式。下面我们都使用User对象,先创建我们需要的类。User.javapackageorg.example;publicclassUser{privateStringname;私人字符串性别;privateIntegerage;publicUser(){}publicUser(Stringname,Stringsex,Integerage){this.name=name;this.sex=性别;这个。年龄=年龄;}publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}publicStringgetSex(){return}publicvoidsetSex(Stringsex){this.sex=sex;}publicIntegergetAge(){返回年龄;}publicvoidsetAge(Integerage){this.age=age;}@OverridepublicStringtoString(){return"User{"+"name='"+name+'''+",sex='"+sex+'''+",age="+age+'}';}}官方解析官方提供的json解析方法比较繁琐,所以用的人比较少。第一步引入依赖:org.jsonjson20160810第二步,编写测试代码:packageorg.example;importorg.json.JSONObject;importorg.springframework.stereotype.Component;/**官方分析*/@ComponentpublicclassJsonTest1{/**Object到json@paramuser@return*/publicStringuserToJson(Useruser){JSONObjectjsonObject=newJSONObject(user);字符串jsonStr=jsonObject.toString();返回jsonStr;}/**jsontoobject@paramjson@return*/publicUseruserFromJson(Stringjson){JSONObjectjsonObject=newJSONObject(json);字符串名称=jsonObject.getString("名称");Stringsex=jsonObject.getString("性别");intage=jsonObject.getInt("年龄");用户user=newUser(姓名,性别,年龄);返回用户;}}第三步,单元测试:packageorg.example;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations="classpath:spring.xml")公共类JsonTest1Test{@AutowiredprivateJsonTest1jsonTest1;@TestpublicvoiduserToJson(){Useruser=newUser("秦明","man",18);字符串json=jsonTest1.userToJson(用户);System.out.println(json);}@TestpublicvoiduserFromJson(){Stringjson="{"sex":"man","name":"秦明","age":18}";用户user=jsonTest1.userFromJson(json);系统.out.println(用户);}}第四步,查看结果:GoogleGson解析第一步,引入依赖:com.google.code.gsongson2.8.5第二步编写测试代码:packageorg.example;importcom.google.gson.Gson;importorg.springframework.stereotype.Component;/**gson分析*/@ComponentpublicclassJsonTest2{/**Objecttojson@paramuser@return*/publicStringuserToJson(Useruser){Gsongson=newGson();字符串json=gson.toJson(用户);返回json;}/**jsontoobject@paramjson@return*/publicUseruserFromJson(Stringjson){Gsongson=newGson();用户user=gson.fromJson(json,User.class);返回用户;}}第三步,单元测试:同上(下面第三步和第四步同上,下面不再赘述)第四步,查看结果:同上阿里巴巴FastJson分析这种分析方法是阿里巴巴自研的.它是最高效的,深受大家喜爱,而且功能强大。如果想了解更多可以查看FastJson官网API第一步引入依赖:com.alibabafastjson1.2.47第二步编写测试代码:packageorg.example;importcom.alibaba.fastjson.JSONObject;importorg.springframework.stereotype.Component;/**fastjson分析*/@ComponentpublicclassJsonTest3{/**objectjson@paramuser@return*/publicStringuserToJson(Useruser){Stringjson=JSONObject.toJSONString(user);返回json;}/**jsontoobject@paramjson@return*/publicUseruserFromJson(Stringjson){Useruser=JSONObject.parseObject(json,User.class);返回用户;}}Jackson解析这种解析方式目前我们使用的一些比较流行的框架,比如SSM和SpringBoot,内部json解析都是使用Jackson,但是很多时候我们会引入FastJson来使用,因为它比较快。第一步引入依赖:com.fasterxml.jackson.corejackson-databind2.9.8第二步编写测试代码:packageorg.example;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.ObjectMapper;importorg.springframework.stereotype。成分;importjava.io.IOException;/**jacksonanalysis*/@ComponentpublicclassJsonTest4{/***objecttojson*@paramuser*@return*/publicStringuserToJson(Useruser)throwsJsonProcessingException{ObjectMapperobjectMapper=newObjectMapper复制代码();字符串json=objectMapper.writeValueAsString(用户);returnjson;}/***jsontoobject*@paramjson*@return*/publicUseruserFromJson(Stringjson)throwsIOException{ObjectMapperobjectMapper=newObjectMapper();用户user=objectMapper.readValue(json,User.class);returnuser;}}Extension~JSON的诞生JSON的诞生是因为XML融入了HTML的浏览器实现细节各不相同,因此DouglasCrockford和ChipMorningstar合作提取了JS数据类型的一个子集作为新的,因为主流浏览器使用通用的JavaScript引擎组件,在解析这种新的数据格式时不存在兼容性问题,于是他们将这种数据格式命名为“JavaScriptObjectNotation”,缩写为JSON,JSON就这样诞生了!