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);
    }
}
相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
352 1
|
5月前
|
存储 Java Go
【Golang】(3)条件判断与循环?切片和数组的关系?映射表与Map?三组关系傻傻分不清?本文带你了解基本的复杂类型与执行判断语句
在Go中,条件控制语句总共有三种if、switch、select。循环只有for,不过for可以充当while使用。如果想要了解这些知识点,初学者进入文章中来感受吧!
222 2
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
237 1
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
4220 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
418 4
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
226 2
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
200 3
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
2149 7
|
JSON 人工智能 编译器
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
149 1

热门文章

最新文章