使用GSON解析JSON数据

implementation 'com.google.code.gson:gson:2.7'

GsonFormat
Gson是采用对象映射的方式,所以我们要为JSON数据创建一个Java对象来与之对应。

我们可以使用GsonFormat插件,迅速的将JSON数据转换成Java对象,使用方法如下:

1、安装好GsonFormat插件
2、新建一个类,在类里的空白处按Alt+S键,并将要转换的JSON数据复制进去,界面如下所示:
 

 

 在这里插入图片描述

注意:自动生成的时候,内部类可能会是静态的,手动把内部类的static去掉。

@SerializedName注解
由于JSON中的一些字段可能不太适合直接作为Java字段来命名,因此这里使用了@SerializedName注解的方式来让JSON字段和Java字段之间建立映射关系。
在这里插入图片描述

 此处的Test类为JSON数据的一个映射类,而USER和PWD为JSON数据中的两个字段,很明显,这两个字段的名字不适合做变量名,所以使用@SerializedName注解的方式来让USER和user建立映射关系,PWD和password建立映射关系。

Gson的使用


解析JSON对象

Gson gson = new Gson();

User user = gson.fromJson(jsonData, User.class);

解析JSON数组

 Gson gson = new Gson();

List<User> userList = gson.fromJson(jsonData, new TypeToken<User>(){}.getType());

要解析的JSON数据:

{
        "user": "user1",
        "pwd": "123456",
            
        "jsonArray": [
			 {"user": "user1",
	 	      "pwd": "123456"},
	  
	 	     {"user": "user2",
	 		 "pwd": "123456"}
						],
						
			"result": "成功"			
}

映射的Java类: 

public class Data {
    
    private String user;
    private String pwd;
    private String result;
    private List<JsonArrayBean> jsonArray;

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public List<JsonArrayBean> getJsonArray() {
        return jsonArray;
    }

    public void setJsonArray(List<JsonArrayBean> jsonArray) {
        this.jsonArray = jsonArray;
    }

    public class JsonArrayBean {
        
        private String user;
        private String pwd;

        public String getUser() {
            return user;
        }

        public void setUser(String user) {
            this.user = user;
        }

        public String getPwd() {
            return pwd;
        }

        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    }
}
private void parseJSONData(String jsonData) {
        Gson gson = new Gson();
        Data data = gson.fromJson(jsonData, Data.class);
        // data就是整个JSON数据映射的一个对象
        String result = data.getResult(); // 取result字段的值
        String pwd = data.getPwd();   // 取pwd字段的值
        String user = data.getUser();  // 取user字段的值

        // 因为jsonArray字段对应的是一个JSON数组,所以要用一个List来对应
        List<Data.JsonArrayBean> list = data.getJsonArray();
        //取值
        for (int i = 0; i < list.size(); i++) {
            Data.JsonArrayBean jsonArrayBean = list.get(i);
            String user1 = jsonArrayBean.getUser();
            String pwd1 = jsonArrayBean.getPwd();
        }
    }

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值