Android-Gson详解

欢迎大家访问我的个人网站 - Sunday俱乐部


Gson(又称Google Gson)是Google公司发布的一个开放源码的Java库,主要用途为序列化Java对象为JSON字串,或反序列化JSON字串成Java对象。

1、java对象转化为json字符串

 /**
     * java对象转化为json字符串
     */
    private void objToJson(){
        User user = new User();
        user.setAge(13);
        user.setHeight(17.1f);
        user.setName("张三");

        Gson gson = new Gson();
        String json = gson.toJson(user);

        Log.d(GSON_TEST,json);
        // {"name":"张三","height":17.1,"age":13}
    }

2、json字符串转化为java对象

/**
     * json字符串转化为java对象
     */
    private void  jsonToObj(){
        String json = "{\"name\":\"张三\",\"height\":17.1,\"age\":13}";

        Gson gson = new Gson();
        User user = gson.fromJson(json,User.class);

        Log.d(GSON_TEST,user.toString());
    // name : 张三,age : 13, height : 17.1
    }

3、json数组转化为java对象集合

/**
     * json数组转化为java对象集合
     */
    private void jsonArrayToObjArray(){
        String json = "[{\"name\":\"张三\",\"height\":17.1,\"age\":13}" +
                ",{\"name\":\"李四\",\"height\":18.1,\"age\":14}" +
                ",{\"name\":\"王五\",\"height\":17.5,\"age\":23}" +
                ",{\"name\":\"赵六\",\"height\":16.7,\"age\":31}]";

       Gson gson = new Gson();

       TypeToken<List<User>> typeToken = new TypeToken<List<User>>(){};

       List<User> userList = gson.fromJson(json,typeToken.getType());

       Log.d(GSON_TEST,userList.toString());
/**
[name : 张三,age : 13, height : 17.1, name : 李四,age : 14, height : 18.1, name : 王五,age : 23, height : 17.5, name : 赵六,age : 31, height : 16.7]
*/
    }

4、json数据转化为java对象map集合

  /**
     * json数据转化为java对象map集合
     */
    private void jsonArrayToObjMap(){
        String json = "{\"one\":{\"name\":\"张三\",\"height\":17.1,\"age\":13}" +
                ",\"two\":{\"name\":\"李四\",\"height\":18.1,\"age\":14}" +
                ",\"three\":{\"name\":\"王五\",\"height\":17.5,\"age\":23}" +
                ",\"four\":{\"name\":\"赵六\",\"height\":16.7,\"age\":31}}";

        Gson gson = new Gson();

        TypeToken<Map<String,User>> typeToken = new TypeToken<Map<String,User>>(){};

        Map<String,User> userList = gson.fromJson(json,typeToken.getType());

        Log.d(GSON_TEST,userList.toString());
        //{one=name : 张三,age : 13, height : 17.1, two=name : 李四,age : 14, height : 18.1, three=name : 王五,age : 23, height : 17.5, four=name : 赵六,age : 31, height : 16.7}
    }

5、多层嵌套的json数据转化为多层Java对象

/**
     * 多层嵌套的json数据转化为多层Java对象
     */
    private void jsonLayerToObjLayer(){
        String json = "{\"works\":[{\"name\":\"张三\",\"height\":17.1,\"age\":13}" +
                ",{\"name\":\"张三\",\"height\":17.1,\"age\":13}" +
                ",{\"name\":\"张三\",\"height\":17.1,\"age\":13}]}";

        Gson gson = new Gson();

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

        Log.d(GSON_TEST,user.getWorks().toString());
       // [name : 张三,age : 13, height : 17.1, name : 张三,age : 13, height : 17.1, name : 张三,age : 13, height : 17.1]
    }

对象结构

public class User {
    private String name;
    private int age;
    private float height;
    private List<Work> works;
    }
public class Work {
    private String name;
    private int age;
    private float height;
    }

站在巨人的肩膀上,我们才能看的更远

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Sunday

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值