JSON学习(一):JavaBean、List类型及Map类型与Json类型的相互转化

简介: JSON学习(一):JavaBean、List类型及Map类型与Json类型的相互转化

先随便建一个类Person.java:


package demo01.pojo;
public class Person {
    private Integer id;
    private String name;
    public Person() {
    }
    public Person(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}



在JsonTest.java中实现类型的相互转换(记得导jar包(我使用的是gson-2.2.4.jar)):


1、JavaBean和Json的相互转换:

     

使用toJson()方法转换成json字符串,使用fromJson()方法转换回来

/**
     * 1.javaBean和json的互转
     */
    @Test
    public void test1(){
        Person person = new Person(1, "哈哈哈");
        Gson gson = new Gson();
        //toJson()方法可以把java对象转换成为json字符串
        String personJsonString = gson.toJson(person);
        System.out.println(personJsonString);
        //fromJson()把json字符串转换为java对象
        Person person1 = gson.fromJson(personJsonString, Person.class);
        System.out.println(person1);
    }


2、 List类型和Json的相互转换

     

这里采用的方法是写一个PersonListType.java类去继承TypeToken,使用它的getType()方法获取类型作为fromJson的第二个参数(也可采用匿名内部类的方法)


PersonListType.java:

package demo01.json;
import com.google.gson.reflect.TypeToken;
import demo01.pojo.Person;
import java.util.ArrayList;
/**
 * 在JsonTest.java中,用做将json字符串转换成list
 */
public class PersonListType extends TypeToken<ArrayList<Person>> {
}


/**
     * 2.list和json的互转
     */
    @Test
    public void test2(){
        List<Person> personList=new ArrayList<>();
        personList.add(new Person(1,"哈哈哈"));
        personList.add(new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把列表转换为json字符串
        String personListJsonString = gson.toJson(personList);
        System.out.println(personListJsonString);
        List<Person>list = gson.fromJson(personListJsonString,new PersonListType().getType());
        System.out.println(list);
    }


3、Map类型和Json的相互转换

     

原理和List基本相同,这里使用匿名内部类的方法,就不用再另写一个类了

/***
     * 3.map和json的互转
     */
    public void test3(){
        Map<Integer,Person> personMap = new HashMap<>();
        personMap.put(1,new Person(1,"哈哈哈"));
        personMap.put(2,new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把map集合转换成为json字符串
        String personMapJsonString = gson.toJson(personMap);
        System.out.println(personMapJsonString);
        //把json字符串转换成为map集合
//        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new PersonMapType().getType());
        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>(){}.getType());
        System.out.println(personMap2);
    }


完整JsonTest.java代码:

package demo01.json;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import demo01.pojo.Person;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JsonTest {
    /**
     * 1.javaBean和json的互转
     */
    @Test
    public void test1(){
        Person person = new Person(1, "哈哈哈");
        Gson gson = new Gson();
        //toJson()方法可以把java对象转换成为json字符串
        String personJsonString = gson.toJson(person);
        System.out.println(personJsonString);
        //fromJson()把json字符串转换为java对象
        Person person1 = gson.fromJson(personJsonString, Person.class);
        System.out.println(person1);
    }
    /**
     * 2.list和json的互转
     */
    @Test
    public void test2(){
        List<Person> personList=new ArrayList<>();
        personList.add(new Person(1,"哈哈哈"));
        personList.add(new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把列表转换为json字符串
        String personListJsonString = gson.toJson(personList);
        System.out.println(personListJsonString);
        List<Person>list = gson.fromJson(personListJsonString,new PersonListType().getType());
        System.out.println(list);
    }
    /***
     * 3.map和json的互转
     */
    public void test3(){
        Map<Integer,Person> personMap = new HashMap<>();
        personMap.put(1,new Person(1,"哈哈哈"));
        personMap.put(2,new Person(2,"嘿嘿嘿"));
        Gson gson = new Gson();
        //把map集合转换成为json字符串
        String personMapJsonString = gson.toJson(personMap);
        System.out.println(personMapJsonString);
        //把json字符串转换成为map集合
//        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new PersonMapType().getType());
        Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString,new TypeToken<HashMap<Integer,Person>>(){}.getType());
        System.out.println(personMap2);
    }
}
相关文章
|
2月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
42 1
|
6天前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
16天前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
36 2
|
26天前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
24 3
|
5月前
|
存储 Dart
Dart的Map类型
Dart的Map类型
|
1月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
101 7
|
2月前
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
32 5
|
3月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
3月前
|
SQL 机器学习/深度学习 算法
【python】python指南(五):静态类型注解之List
【python】python指南(五):静态类型注解之List
37 0
【python】python指南(五):静态类型注解之List
|
3月前
|
存储 JSON 测试技术
Python中最值得学习的第三方JSON库
Python中最值得学习的第三方JSON库