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);
    }
}
相关文章
|
4月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
53 1
|
2月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
57 4
|
3月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
438 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
3月前
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
47 1
|
3月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
428 7
|
5月前
|
JSON 人工智能 编译器
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
44 1
|
5月前
|
存储 JSON 测试技术
Python中最值得学习的第三方JSON库
Python中最值得学习的第三方JSON库
141 0
|
5月前
|
JSON 算法 算法框架/工具
【python】python指南(十二):Json与dict、list互相转换
【python】python指南(十二):Json与dict、list互相转换
29 0
|
6月前
|
存储 C++ 索引
|
7月前
|
JSON fastjson 数据格式
使用jackson和fastjson实现list与json互转
使用jackson和fastjson实现list与json互转