FastJson介绍
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
各种转换总结(附代码)
在日常开发中,会经常遇到Json和各种类型的互转,今天就总结下能想到的所有转换。无先后顺序,想到什么写什么。新建一个实体类后面展示会用到。为了偷懒用了lombok,数据也都是瞎写的,不要纠结。
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Person {
private String name;
private Integer age;
private Date birth;
}
2.1JavaBean转JsonObject
@SpringBootTest
public class JavaBean2JsonObjectTests {
@Autowired
private Person person;
//JavaBean to JsonObject
@Test
void test(){
person.setName("张三");
person.setAge(58);
person.setBirth(new Date(19920320L));
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(person);
System.out.println(jsonObject.get("name") + "/" + jsonObject.get("age"));
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/13c0a1a4466be4089b9f9a6cb4b41e62.png)
2.2JavaBean转Json字符串
@SpringBootTest
public class JavaBean2JsonTests {
@Autowired
private Person person;
//JavaBean to Json
@Test
void test(){
person.setName("张三");
person.setAge(58);
person.setBirth(new Date(19920327L));
String jsonStr = JSON.toJSONString(person);
System.out.println(jsonStr);
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/083c1e6eac2bc104822f9033ff3aa37c.png)
2.3Json字符串转JavaBean
@SpringBootTest
public class Json2JavaBeanTests {
@Autowired
private Person person;
//Json to JavaBean
@Test
void test(){
person.setName("张三");
person.setAge(58);
person.setBirth(new Date());
String jsonStr = JSON.toJSONString(person);
System.out.println(jsonStr);
Person person = JSONObject.parseObject(jsonStr, Person.class);
System.out.println(person);
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/cfb499cef9a31617ce7ba8fcab44c850.png)
这里注意在序列化和反序列化时,Person对象会默认以Date类型的时间戳去转换。
2.4Json字符串转JsonObject
@SpringBootTest
public class Json2JsonObjectTests {
//Json字符串转JsonObject
@Test
void test(){
String jsonStr = "{\"key1\": 1,\"key2\":2,\"key3\":3}";
JSONObject parse = JSONObject.parseObject(jsonStr);
System.out.println(parse.getString("key1"));
}
}
输出结果是:1
2.5Json字符串转List
@SpringBootTest
public class Json2ListTests {
//Json to List
@Test
void test(){
String jsonStr = "[{\"key1\": 1},{\"key2\":2},{\"key3\":3}]";
List<Map> maps = JSONArray.parseArray(jsonStr, Map.class);
maps.forEach(System.out::println);
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/8fe1145cc86f70bb4f2dd9d9e403cccc.png)
2.6Json字符串转Map
@SpringBootTest
public class Json2MapTests {
@Test
void test(){
String jsonStr = "{\"key1\": 1,\"key2\":2,\"key3\":3}";
Map map = JSONObject.parseObject(jsonStr, Map.class);
map.forEach((o1, o2) -> System.out.println(o1 + "=" + o2));
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/e21a6c1080cd45bcc2541f657a8e850d.png)
2.7Json数组字符串转JsonArray
@SpringBootTest
public class JsonArrayTests {
//JSONArray 添加Object
@Test
void test() {
JSONArray jsonArray = new JSONArray();
jsonArray.add(new Person("张三", 76, new Date()));
JSONObject jsonObject = new JSONObject();
jsonObject.put("key1",1);
jsonArray.add(jsonObject);
String str = JSONArray.toJSONString(jsonArray);
System.out.println(str);
}
//Json数组字符串转JsonArray
@Test
void test1(){
String jsonArrStr = "[{\"name\" : \"张三\",\"age\" : 26},{\"name\" : \"李四\",\"age\" : 26}]";
JSONArray jsonArray = JSONArray.parseArray(jsonArrStr);
jsonArray.forEach(o -> System.out.println(o.toString()));
}
}
输出结果是:
test:
![](https://img-blog.csdnimg.cn/img_convert/1d7af098681eb1640039392f81b514e1.png)
test1:
![](https://img-blog.csdnimg.cn/img_convert/fff9981fbe6d148fd1142dc799bd7fc5.png)
这里注意JsonArray是FastJson提供的一个类,是一个对象,并不是我们创建的一般意义的数组,代码中我们也可以看到JsonArray是可以添加JsonObject 和JavaBean等各种Object的。
2.8JsonObject 转 Json字符串
@SpringBootTest
public class JsonObject2JsonTests {
//JsonObject 转 Json字符串
@Test
void test() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("key1", new Person("张三", 11, new Date()));
String jsonStr = JSON.toJSONString(jsonObject);
System.out.println(jsonStr);
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/fdf17f8310dbb2045e317e3de44cf644.png)
2.9List转JsonArray
@SpringBootTest
public class List2JsonArrayTests {
@Autowired
private Person person;
//List to JsonArray
@Test
void test(){
List<Person> list = new ArrayList<>();
person.setName("张三");
person.setAge(26);
person.setBirth(new Date());
list.add(person);
person = new Person();
person.setName("李四");
person.setAge(31);
person.setBirth(new Date());
list.add(person);
JSONArray jsonArray = (JSONArray)JSONArray.toJSON(list);
jsonArray.forEach(o -> System.out.println(o.toString()));
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/2f95d4b80aba757a9a000c193223198b.png)
2.10List 转Json 字符串
@SpringBootTest
public class List2JsonTests {
@Autowired
private Person person;
//List 转Json 字符串
@Test
void test() {
List<Person> list = new ArrayList<>();
person.setName("张三");
person.setAge(26);
person.setBirth(new Date());
list.add(person);
person = new Person();
person.setName("李四");
person.setAge(31);
person.setBirth(new Date());
list.add(person);
String listJson = JSON.toJSONString(list);
System.out.println(listJson);
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/87d4095c6dbcaee943272f5c00a59da3.png)
2.11Map转Json字符串
@SpringBootTest
public class Map2JsonTests {
//Map转Json字符串
@Test
void test(){
Map<String, Object> map = new HashMap<>();
map.put("key1","1");
map.put("key2","2");
map.put("key3","3");
map.put("key4","4");
String mapJson = JSON.toJSONString(map);
System.out.println("mapJson:" + mapJson);
}
}
输出结果是:
![](https://img-blog.csdnimg.cn/img_convert/c72f89421580c8698ca001a7c501215a.png)
总结
常用的Json转换已经罗列出来了,大家也可以自己补充一些,作为日常开发中的应用小结。手码不易,点点关注。