Android Gson生成、解析json数据

本文介绍如何使用Gson库进行Java对象与JSON之间的转换,包括单个对象、对象列表的序列化与反序列化过程。
package com.datong.gsondemo;

/**
 * Created by liyongjian on 2016/6/28.
 */
public class Person {

    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

二、

HashMap<String, String> map = new HashMap<>();
        map.put("key", "value");
        Log.e("TAG", gson.toJson(map));//{"key":"value"}

        map.clear();
        map.put("key0", "value0");
        map.put("key1", "value1");
        map.put("key2","value2");
        Log.e("TAG",gson.toJson(map));//{"key2":"value2","key0":"value0","key1":"value1"}

        /**
         * 将person对象转为json
         */
        Person person = new Person("Andy",3);
        String personJson = gson.toJson(person);
        Log.e("TAG", "person" + personJson);//person{"age":3,"name":"Andy"}


        /**
         * 将List<Person> 转为JsonArray
         */
        List<Person> list = new ArrayList<>();
        for(int i = 0; i < 3; i++){
            list.add(new Person("Andy_" + i, i));
        }
        String personJsonArray = gson.toJson(list);
        Log.e("TAG", "list " + personJsonArray);//list [{"age":0,"name":"Andy_0"},{"age":1,"name":"Andy_1"},{"age":2,"name":"Andy_2"}]


        /**
         * 将personJson还原成对象
         */
        Person person1 = gson.fromJson(personJson,Person.class);
        Log.e("TAG",person1.getName() + "  " + person1.getAge());//person1: Andy  3

        /**
         * 将personJsonArray转换成List<Person>
         */
        Type listType= new TypeToken<ArrayList<Person>>(){}.getType();
        List<Person> persons = new ArrayList<>();
        persons = gson.fromJson(personJsonArray,listType);

        for (Person p : persons){
            Log.e("TAG", p.getName() + "  " +  p.getAge());// Andy_0  0 Andy_1  1 Andy_2  2
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值