gson框架的使用

39 篇文章 0 订阅

GSON

GSON 是Google的一个json解析框架,和传统的json解析相比,有着明显的优势。

关于基本的JSON解析,你可以看下面这篇文章
Android JSON的解析

API引入

本文使用的gson-2.3.1.jar

基本数据类型和json字符串的转换

通过toJson()将基本数据类型转换成json字符串


public class Main {
    public static void main(String[] args) {
        int[] A = new int[] { 1, 2, 3, 4, 5 };
        String[] days = new String[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

        Gson gson = new Gson();
        String numsJson = gson.toJson(A);
        System.out.println(numsJson);
        // output : [1,2,3,4,5]
        String daysJson = gson.toJson(days);
        System.out.println(daysJson);
        // output : ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]
    }
}
// 二维数组转换成json
int[][] B = new int[][]{
    {1,2,3},
    {4,5,6},
    {7,8,9}
};
System.out.println(gson.toJson(B));
//[[1,2,3],[4,5,6],[7,8,9]]

使用fromJson()将json字符串的数据成对象

// 第二个参数填对象类型
int[] arr = gson.fromJson(numsJson, int[].class);

java Bean 对象与json的转换

java Bean
class Person {
        private String name;
        private int age;
        private String addr;

        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;
        }

        public String getAddr() {
            return addr;
        }

        public void setAddr(String addr) {
            this.addr = addr;
        }

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

        public Person() {
        }
    }

java Bean 转换成json

Person p = new Person("ytr", 21, "hebust");
String perJson = gson.toJson(p);
System.out.println(perJson);
// output  {"name":"ytr","age":21,"addr":"hebust"}

 json转换成javaBean

Person p2 = gson.fromJson(perJson, Person.class);
System.out.println(p2);
//output Person [name=ytr, age=21, addr=hebust]

集合与json的转换

list 数据
private static List<Person> list = new ArrayList<>();
// init data
static {
    list.add(new Person("a1", 21, "hebust"));
    list.add(new Person("b2", 22, "pku"));
    list.add(new Person("c3", 23, "tsinghua"));
}

集合转换成json

String listJson = gson.toJson(list);
System.out.println(listJson);
// [{"name":"a1","age":21,"addr":"hebust"},{"name":"b2","age":22,"addr":"pku"},{"name":"c3","age":23,"addr":"tsinghua"}]

json 转换成集合

List<Person> persons = gson.fromJson(listJson, ArrayList.class);
System.out.println(persons);
//[{name=a1, age=21.0, addr=hebust}, {name=b2, age=22.0, addr=pku}, {name=c3, age=23.0, addr=tsinghua}]

GSON 对泛型的处理

List<Person> persons = gson.fromJson(listJson, new TypeToken<List<Person>>() {
        }.getType());

使用typetoken,可以使编译器获取正确的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值