栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java--json与JavaBean,List,Map的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java--json与JavaBean,List,Map的使用

需要用到谷歌的一个jar包

gson.jar

测试的类

public class Person {
    private String name;
    private int age;
    private String sex;

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

    public Person() {
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                ", sex='" + sex + ''' +
                '}';
    }
}
//只需要写明继承的泛型,就可以作为参数传入了
public class PersonType extends TypeToken> {

}

 java--json与JavaBean,List,Map的使用

public class Test {
    public static void main(String[] args) {
        //javaBean与json字符串之间的转化
        Person person=new Person("小白",19,"男");
        Gson gson = new Gson();//创建谷歌的工具类
        //toJson();将对象转化为json字符串
        String s = gson.toJson(person);
        System.out.println(s);//{"name":"小白","age":19,"sex":"男"}
        //fromJson()将json字符串转化为传入的类对象
        person= gson.fromJson(s,Person.class);
        System.out.println(person.toString());//Person{name='小白', age=19, sex='男'}
        //List 与json之间的转化
        ArrayList people = new ArrayList<>();
        people.add(new Person("白小纯",20,"男"));
        people.add(new Person("孟浩",22,"男"));
        people.add(new Person("李清照",20,"女"));
        String s1 = gson.toJson(people);
        System.out.println(s1);//[{"name":"白小纯","age":20,"sex":"男"},{"name":"孟浩","age":22,"sex":"男"},{"name":"李清照","age":20,"sex":"女"}]
        //但是这样做的话就有缺陷
        //转化回集合类型
        ArrayList arrayList = gson.fromJson(s1, ArrayList.class);
        //发现原来传入集合的泛型失效了,全部的都变成gson包中的linkedTreeMap类型了
        for (Object o : arrayList) {
            System.out.println(o);
            System.out.println(o.getClass());//class com.google.gson.internal.linkedTreeMap
        }
        //所以我们需要换一种方式来使用
        Object o = gson.fromJson(s1, new PersonType().getType());
        System.out.println(o.getClass());//class java.util.ArrayList
        ArrayList list=(ArrayList)o;
        //再看元素类型
        System.out.println(list.get(0).getClass());//class projectTest.Person
        //Map类型与json字符串的转换
        HashMap personHashMap=new HashMap<>();
        personHashMap.put("p1",new Person("白小纯",20,"男"));
        personHashMap.put("p2",new Person("孟浩",22,"男"));
        String s2 = gson.toJson(personHashMap);
        System.out.println(s2);//{"p1":{"name":"白小纯","age":20,"sex":"男"},"p2":{"name":"孟浩","age":22,"sex":"男"}}
        //json'字符串转化为原来的对象
        HashMap map= gson.fromJson(s2,new TypeToken>(){}.getType());//直接使用匿名子类
        for (Map.Entry stringPersonEntry : map.entrySet()) {
            System.out.println(stringPersonEntry);
        }

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号