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
346 1
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
215 18
你对Collection中Set、List、Map理解?
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
406 20
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
4170 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
413 4
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
2139 7
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
211 1
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
算法
你对Collection中Set、List、Map理解?
你对Collection中Set、List、Map理解?
160 5
|
JSON 人工智能 编译器
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
149 1

热门文章

最新文章