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"));
}
}
输出结果是:
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);
}
输出结果是:
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);
}
}
输出结果是:
这里注意在序列化和反序列化时,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);
}
}
输出结果是:
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));
}
}
输出结果是:
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:
test1:
这里注意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);
}
}
输出结果是:
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()));
}
}
输出结果是:
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);
}
}
输出结果是:
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);
}
}
输出结果是:
总结
常用的Json转换已经罗列出来了,大家也可以自己补充一些,作为日常开发中的应用小结。手码不易,点点关注。