fastjson常用API
一、fastjson简介
FastJson是阿里巴巴的开源JSON解析库,使用Java 语言编写的高性能功能完善的 JSON 库,对于序列化和反序列化都有很高的性能,是目前Java语言中最快的JSON库,也是现在最受欢迎的json库。
二、json对象常用写法
1、maven引入
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
2、使用场景
基础类
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
1、json字符串转成json对象,通过jsonObject 获取各种属性。
public static void demo1() {
String str = "{\"status\":true,\"data\":[{\"name\":\"张刚\",\"age\":\"2\"},{\"name\":\"zhanggang\",\"age\":\"3\"}],\"code\":200}";
//字符串转成JSONObject
JSONObject jsonObject = JSON.parseObject(str);
//获得JSONObject的某个属性
Boolean status = jsonObject.getBoolean("status");
//获得JSONObject里的JSONArray
JSONArray jsonArray = jsonObject.getJSONArray("data");
//JSONArray转字符串
String toJSONString = jsonArray.toJSONString();
}
2、json字符串转Map对象,方便根据key取数据
public static void demo2() {
String str = "{\"status\":true,\"data\":[{\"name\":\"张刚\",\"age\":\"2\"},{\"name\":\"zhanggang\",\"age\":\"3\"}],\"code\":200}";
JSONObject jsonObject = JSON.parseObject(str);
Map<String, Object> map = jsonObject;
List<Map<String, Object>> data = (List<Map<String, Object>>) map.get("data");
System.out.println(data);
System.out.println(map.get("status"));
}
3、json字符串转JavaBean
public static void demo3() {
String s = "{\"name\":\"张刚\",\"age\":\"2\"}";
Student student = JSON.parseObject(s, Student.class);
System.out.println(student);
}
4、json字符串转成List-JavaBean的集合
public static void demo4() {
String s = "[{\"name\":\"张刚\",\"age\":\"2\"},{\"name\":\"zhanggang\",\"age\":\"3\"}]";
List<Student> list = JSON.parseArray(s, Student.class);
list.stream().forEach(System.out::println);
System.out.println("------------------");
List<Map> list2 = JSON.parseArray(s, Map.class);
list2.stream().forEach(System.out::println);
}
5、 json字符串转成List-Map的集合
public static void demo5() {
String s = "[{\"name\":\"张刚\",\"age\":\"2\"},{\"name\":\"zhanggang\",\"age\":\"3\"}]";
//第一种方式
List<Map> list1 = JSON.parseArray(s, Map.class);
list1.stream().forEach(System.out::println);
//第二种方式
List<Map<String, Object>> list2 = JSONArray.parseObject(s, List.class);
list2.stream().forEach(System.out::println);
//第三种方式
List<Map<String, Object>> list3 = (List<Map<String, Object>>) JSONArray.parse(s);
list3.stream().forEach(System.out::println);
}
6、Object对象转成json字符串
public static void demo6() {
Map<String,String> map = new HashMap<>();
List<Map<String,String>> list = new ArrayList<>();
//JSON.toJSONString方法可以把任何对象转成json字符串
String mapString = JSON.toJSONString(map);
String listString = JSON.toJSONString(list);
}
7、jsonArray转List-javaBean、List-Map
public static void demo7() {
String str = "{\"status\":true,\"data\":[{\"name\":\"张刚\",\"age\":\"2\"},{\"name\":\"zhanggang\",\"age\":\"3\"}],\"code\":200}";
JSONObject jsonObject = JSON.parseObject(str);
JSONArray jsonArray = jsonObject.getJSONArray("data");
//jsonArray转List-javaBean
List<Student> student= jsonArray.toJavaList(Student.class);
//jsonArray转List-Map
List<Map> map= jsonArray.toJavaList(Map.class);
System.out.println(student);
System.out.println(map);
}