共计 3349 个字符,预计需要花费 9 分钟才能阅读完成。
前言:JSON 在传输数据时,起到了特别大的作用,本文是采用的是 com.alibaba.fastjson 第三方包完成 json 格式的转换
一、首先导入 maven 依赖:
com.alibaba
fastjson
2.0.19
二、常用的一些方法
2.1 序列化
对象、集合序列化成 json 字符串
public static String toJSONString(Object object)
2.2 反序列化
json 字符串反序列化成 javabean 对象或者类
public static T parseObject(String text, Class clazz)
json 字符串反序列化成为 List 集合
public static List parseArray(String text, Class clazz)
json 字符串反序列化成为 Map 集合:
public static T parseObject(String text, TypeReference type, Feature... features)
三、Demo 演示
package com.hssy.newcustomer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.hssy.newcustomer.dto.fastjson.JsonDetailModule;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SpringBootTest
class NewcustomerApplicationTests {
// 测试 Java 对象进行 json 序列化成 json 字符串
@Test
void contextLoads() {JsonDetailModule module = new JsonDetailModule();
module.setId(2);
module.setName("张菲");
List hobbys = new ArrayList();
hobbys.add("唱歌");
hobbys.add("书法");
hobbys.add("三国演绎");
module.setHobby(hobbys);
String jsonString = JSON.toJSONString(module);
System.out.println(jsonString);
// {"hobby":["唱歌","书法","三国演绎"],"id":2,"name":"张菲"}
}
// 测试将 List 集合进行 json 序列化成 json 字符串
@Test
void testListToJson(){List list = new ArrayList();
for (int i = 0; i hobbys = new ArrayList();
hobbys.add("随机爱好:"+(char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1))));
hobbys.add("随机爱好:"+(char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1))));
module.setHobby(hobbys);
list.add(module);
}
String jsonString = JSON.toJSONString(list);
System.out.println(jsonString);
// [{"hobby":["随机爱好:武","随机爱好:畧"],"id":0,"name":"用户:0"},{"hobby":["随机爱好:穊","随机爱好:丠"],"id":1,"name":"用户:1"}]
}
@Test
void testMapToJson(){HashMap> map = new HashMap();
List hobbys = new ArrayList();
hobbys.add("唱");
hobbys.add("跳");
hobbys.add("rap");
hobbys.add("篮球");
List genders = new ArrayList();
genders.add("男");
genders.add("女");
map.put("爱好",hobbys);
map.put("性别",genders);
String jsonString = JSON.toJSONString(map);
System.out.println(jsonString);
// {"爱好":["唱","跳","rap","篮球"],"性别":["男","女"]}
}
// 测试 json 字符串反序列化成 Java 对象
@Test
void testJsonToJava(){String jsonString = "{"hobby":[" 唱歌 "," 书法 "," 三国演绎 "],"id":2,"name":" 张菲 "}";
JsonDetailModule jsonDetialModule = JSON.parseObject(jsonString, JsonDetailModule.class);
System.out.println(jsonDetialModule); //JsonDetailModule(id=2, name= 张菲, hobby=[ 唱歌, 书法, 三国演绎])
}
@Test
void testJsonToList(){String jsonString = "[{"hobby":[" 随机爱好:武 "," 随机爱好:畧 "],"id":0,"name":" 用户:0"},{"hobby":[" 随机爱好:穊 "," 随机爱好:丠 "],"id":1,"name":" 用户:1"}]";
List jsonDetailModules = JSON.parseArray(jsonString, JsonDetailModule.class);
System.out.println(jsonDetailModules);
// [JsonDetailModule(id=0, name= 用户:0, hobby=[ 随机爱好:武, 随机爱好:畧]), JsonDetailModule(id=1, name= 用户:1, hobby=[ 随机爱好:穊, 随机爱好:丠])]
for (JsonDetailModule item : jsonDetailModules) {System.out.println(item);
}
// JsonDetailModule(id=0, name= 用户:0, hobby=[ 随机爱好:武, 随机爱好:畧])
// JsonDetailModule(id=1, name= 用户:1, hobby=[ 随机爱好:穊, 随机爱好:丠])
}
@Test
void testJsonToMap(){String jsonString ="{" 爱好 ":[" 唱 "," 跳 ","rap"," 篮球 "]," 性别 ":[" 男 "," 女 "]}";
// JSONObject jsonObject = JSON.parseObject(jsonString);
// 使用 JSON.parseObject(jsonString) 直接进行反序列化是没有泛型的,没有泛型是不安全的集合
// 我们要求转后的集合必须有泛型
// 因此,调用 parseObject 方法,还必须多穿一个 TypeReference 类型的参数,TypeReference 类的泛型中,传递转换后的 Map 集合
Map> map = JSON.parseObject(jsonString, new TypeReference
原文地址: 使用 fastJSON 进行 json 格式的转换
正文完