在做接口设计或者api接口测试时,经常会制作json格式的数据,或者json格式的数据,这里给出一篇文章 ,详细讲解如何j解析son。
一 什么是json
Json(javascript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMASctipt(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
json 广泛的应用于web的数据传输中,是前端开发人员或者后端开发人员必须要学习的一种数据格式,这里复制一篇网址,供大家学习json
http://www.w3school.com.cn/json/index.asp
二 准备工作
解析json需要专门用来解析json的jar包,网上解析json的jar包有很多,这里推荐谷歌版本的,以下是获取方法
1 通过构建maven项目获取,在pom.xml中 的依赖中粘贴以下代码
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> </dependency>
贴好代码后就会自动下载对应的jar包了,用起来相当的方便,jar包下载后找到jar包的存储位置,再导入非maven项目中,就可以拿来用了
2:直接到maven库的官网下载 这里给出地址
https://mvnrepository.com/artifact/com.google/gson/2.1.0
到图中箭头所指即可
下载好jar包后一定要记得加入包中,这里给出如何导jar包
1 :点击项目 新建一个文件夹 命名为lib
2:将所需要的jar包放入lib 中
3:在lib下找到jar包 右击 点击Build Path 再点击Add To Bulid Path 就完成了所有工作
三 解析json
json 的解析一共两步 :第一步 ,创建json解析器 。第二步,解析json。
首先给出一段需要解析的json内容
{ "status":"200", "msg":"查询成功!", "result":{ "code":"6951404400030", "goodsName":"感冒清热颗粒", "manuName":"爱民药业集团股份有限公司", "manuAddress":""," spec":"12", "price":"0.00", "img":""," goodsType":"未分类"," ycg":""," trademark":"鑫禹星", "remark":"" } }
解析之先分析一下这段json数据,
这段数据是我之前做一个条码接口时用到的数据,最外层是一个json对象,有三个属性,status属性,对应值为字符串,msg属性,对应值为字符串,result属性,对应值为一个对象,而result属性所对应的对象又带有许多属性,大致整个数据就是这样。
首先 创建json解析器
JsonParser parser = new JsonParser();
解析器的作用是为了将json数据解析为一个json对象,再通过json对象的操作解析json
然后 实例化json对象
JsonObject json = (JsonObject) parser.parse(new FileReader("D:\\text.json"));
parser对象下有一个方法,parse();方法,传递的参数可以是json格式的字符串,或者存放josn的json文件,我这里传入的是json格式的文件,该方法返回的并不是json对象,需要进行强转,由于存在需要解析的内容不是json格式的情况,所以会抛出json解析异常,这里有文件流操作,同样会抛出文件流异常,记得try catch
拿到json对象之后,接下来就是直接获取了
String status = json.get("status").getAsString(); System.out.println(status);
json对象下面有一个get方法,传递的参数为json数据中的属性名称,返回一个对象(具体什么对象目前还不清楚,有建议的欢迎评论区留言),然后该对象下有许多方法 getAsString 方法,见名知意,这个方法就是将属性值当为字符串返回,最后赋值给status,当然需要注意json中属性类型,防止赋值类型错误。直接看结果:
到此我们已经完成josn格式的解析了 值得一提的是,json数据中,属性字符串或者数字或者布尔型时可以直接解析,数组或者对象需要简介解析,例如:
String result = json.get("result").getAsString(); System.out.println(result);
前文提到过,result属性对应值为一个对象,不能直接拿来解析,需要一层跳板,如下
String result = json.get("result").getAsJsonObject().toString(); System.out.println(result);
通过 getAsJsonObject() 这个方法会得到一个新的对象,如果想要继续解析的话,在此对象上继续操作就可以了,实例代码只将json对象转为字符串。
至此 如何解析json已经完成,至于如何解析json中的数组对象,大家就自主探究吧。
附上源码
import java.io.FileNotFoundException; import java.io.FileReader; import com.google.gson.*; public class Demo { public static void main(String[] args) { JsonParser parser = new JsonParser(); try { JsonObject json = (JsonObject) parser.parse(new FileReader("D:\\text.json")); String result = json.get("result").getAsJsonObject().toString(); System.out.println(result); } catch (JsonIOException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
欢迎大家在评论区留言
来源:https://www.cnblogs.com/Devin97/p/10720003.html