阿里巴巴Fastjson是一个Java语言编写的JSON处理器。
一、准备工作:
1.新建 class User
package com.sonya;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class User{
private String name;
private String password;
private String remark;
public User(String name, String password, String remark) {
this.name = name;
this.password = password;
this.remark = remark;
}
}
2.模拟数据:
User u1 = new User("Sonya","12345","@@@ ? 、| /d 、t 我是小小糖");
User u2 = new User("Aynos","54321","@@@ ? 、| /ddff 你是不是傻呀 ");
List<User> userList = new ArrayList<>();
userList.add(u1);
userList.add(u2);
二、序列化和反序列化
1.Java对象转Json字符串
方法:JSON.toJSONString()
代码:
System.out.println("~~~~~~~~~~~ 1.Java对象 转 Json字符串 ~~~~~~~~~~~");
String ju = JSON.toJSONString(u1);
System.out.println(ju);
输出:
~~~~~~~~~~~ 1.Java对象 转 Json字符串 ~~~~~~~~~~~
{"name":"Sonya","password":"12345","remark":"@@@ ? 、| /d 、t 我是小小糖"}
2.List对象转Json字符串
方法:JSON.toJSONString()
代码:
System.out.println("~~~~~~~~~~~ 2.List对象 转 Json字符串 ~~~~~~~~~~~");
String jlist = JSON.toJSONString(userList);
System.out.println(jlist);
输出:
~~~~~~~~~~~ 2.List对象 转 Json字符串 ~~~~~~~~~~~
[{"name":"Sonya","password":"12345","remark":"@@@ ? 、| /d 、t 我是小小糖"},{"name":"Aynos","password":"54321","remark":"@@@ ? 、| /ddff 你是不是傻呀 "}]
3.Json字符串转Json对象
方法:JSON.parseObject()
代码:
System.out.println("~~~~~~~~~~~ 3.Json字符串 转 Json对象 ~~~~~~~~~~~");
String jsonStr = "{\"password\":\"1234\",\"name\":\"Sonya\"}";
JSONObject jo = JSON.parseObject(jsonStr);
System.out.println("获取名称:"+jo.get("name"));
输出:
~~~~~~~~~~~ 3.Json字符串 转 Json对象 ~~~~~~~~~~~
获取名称:Sonya
4.Json字符串转Java对象
方法:JSON.parseObject()
代码:
System.out.println("~~~~~~~~~~~ 4.Json字符串 转 Java对象 ~~~~~~~~~~~");
User user = JSON.parseObject(ju,User.class);
System.out.println("获取名称:"+user.getName());
输出:
~~~~~~~~~~~ 4.Json字符串 转 Java对象 ~~~~~~~~~~~
获取名称:Sonya
5.Json字符串转List对象
方法:JSON.parseArray()
代码:
System.out.println("~~~~~~~~~~~ 5.Json字符串 转 List对象 ~~~~~~~~~~~");
List<User> jsonList = JSON.parseArray(jlist,User.class);
jsonList.forEach(u -> {
System.out.println("对象:"+u);
System.out.println("对象-名称:"+ u.getName());
});
输出:
~~~~~~~~~~~ 5.Json字符串 转 List对象 ~~~~~~~~~~~
对象:User(name=Sonya, password=12345, remark=@@@ ? 、| /d 、t 我是小小糖)
对象-名称:Sonya
对象:User(name=Aynos, password=54321, remark=@@@ ? 、| /ddff 你是不是傻呀 )
对象-名称:Aynos
6.Json字符串转Map
方法:
- 第一种:JSON.parse(str)
- 第二种:JSON.parseObject(str)
- 第三种:JSON.parseObject(str, Map.class)
- 第四种:JSONObject.parseObject(str, Map.class)
- 第五种:JSON.parse(str)
代码:
System.out.println("~~~~~~~~~~~ 6.Json字符串 转 Map ~~~~~~~~~~~");
String str = "{\"name\":\"Sonya\",\"age\":\"18\",\"phone\":\"1501033****\"}";
Map<String,String> smap1 = (Map)JSON.parse(str);
Map<String,String> smap2 = (Map)JSON.parseObject(str);
Map smap3 = JSON.parseObject(str, Map.class);
Map smap4 = JSONObject.parseObject(str, Map.class);
Map<String,String> smap5 = (Map)JSONObject.parse(str);
输出:
第一种:{"phone":"1501033****","name":"Sonya","age":"18"}
key:phonevalue:1501033****
key:namevalue:Sonya
key:agevalue:18
第二种:{"phone":"1501033****","name":"Sonya","age":"18"}
key:phonevalue:1501033****
key:namevalue:Sonya
key:agevalue:18
第三种:{phone=1501033****, name=Sonya, age=18}
key:phonevalue:1501033****
key:namevalue:Sonya
key:agevalue:18
第四种:{phone=1501033****, name=Sonya, age=18}
key:phonevalue:1501033****
key:namevalue:Sonya
key:agevalue:18
第五种:{"phone":"1501033****","name":"Sonya","age":"18"}
key:phonevalue:1501033****
key:namevalue:Sonya
key:agevalue:18
2021年将要过去!努力!