java 解析json

☆樱花仙子☆ 提交于 2020-03-23 09:37:27

  在做接口设计或者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();
        }
    }
}

 

  欢迎大家在评论区留言

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!