共计 5062 个字符,预计需要花费 13 分钟才能阅读完成。
Fastjson 是一个 Java 语言编写的高性能功能完善的 JSON 库。它采用一种“假定有序快速匹配”的算法,把 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库。Fastjson 接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web 输出、Android 客户端等多种应用场景。
maven 工程可以在 pom 文件加入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.21</version>
</dependency>
fastjson 入口类是 com.alibaba.fastjson.JSON,主要的 API 是 JSON.toJSONString,和 parseObject。
常用的序列化操作都可以在 JSON 类上的静态方法直接完成。
// 把 JSON 文本 parse 为 JSONObject 或者 JSONArray
public static final Object parse(String text);
// 把 JSON 文本 parse 成 JSONObject
public static final JSONObject parseObject(String text);
// 把 JSON 文本 parse 为 JavaBean
public static final <T> T parseObject(String text, Class<T> clazz);
// 把 JSON 文本 parse 成 JSONArray
public static final JSONArray parseArray(String text);
// 把 JSON 文本 parse 成 JavaBean 集合
public static final <T> List<T> parseArray(String text, Class<T> clazz);
// 将 JavaBean 序列化为 JSON 文本
public static final String toJSONString(Object object);
// 将 JavaBean 序列化为带格式的 JSON 文本
public static final String toJSONString(Object object, boolean prettyFormat);
// 将 JavaBean 转换为 JSONObject 或者 JSONArray。
public static final Object toJSON(Object javaObject);
———————————————————–
// 序列化:
String jsonString = JSON.toJSONString(obj);
// 反序列化:
VO vo = JSON.parseObject(“…”, VO.class);
// 泛型反序列化:
import com.alibaba.fastjson.TypeReference;
List<VO> list = JSON.parseObject(“…”, new TypeReference<List<VO>>() {});
下面贴出自己代码,相当于是 FastJson 使用操作的一个集合,基本上满足开发中绝大部分的 json 解析和拼接了。
package heima.itcast.demo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import heima.itcast.demo.model.Book;
import java.util.*;
public class Test {
public static void main(String[] args) {
//String 转化为实体类 Book
StrToObject();
//String 转化为 jsonObject
StrToJsonObject();
// 实体类转换为 json
// 多个实体类转换为 json 数组形式的 string
//String 转化为 List<Book>
StrToListObject();
//String 转化为数组
//String 转化为 ArrayList
StrToArrayList();
//map 和 json 互相转换
mapTo();
}
/**
* String 转化为实体类 Book
*/
public static void StrToObject() {
StringBuilder sb = new StringBuilder();
sb.append(“{“);
sb.append(“\”name\”: \” 教父三部曲 \”,”);
sb.append(” \”author\”: \” 马里奥·普佐 \”,”);
sb.append(” \”price\”: \”100\””);
sb.append(“}”);
Book book = JSON.parseObject(sb.toString(), Book.class);
System.out.println(“ 书名:”+book.getName()+”; 作者:”+book.getAuthor()+”; 价格:”+book.getPrice());
}
/**
* String 转化为 jsonObject
*/
public static void StrToJsonObject() {
StringBuilder sb = new StringBuilder();
sb.append(“{“);
sb.append(“\”name\”: \” 教父三部曲 \”,”);
sb.append(” \”author\”: \” 马里奥·普佐 \”,”);
sb.append(” \”price\”: \”100\””);
sb.append(“}”);
JSONObject jsonObj = JSON.parseObject(sb.toString());
for(Map.Entry<String, Object> entry : jsonObj.entrySet()){
System.out.println(entry.getKey()+”–“+entry.getValue());
}
}
/**
* 实体类转换为 json
* 多个实体类转换为 json 数组形式的 string
* String 转化为 List<Book>
*/
public static void StrToListObject() {
List<Book> bookList = new ArrayList<>();
Book book1 = new Book(“ 教父三部曲 ”,” 马里奥·普佐 ”,100) ;
Book book2 = new Book(“ 天才在左疯子在右 ”,” 高铭 ”,30) ;
bookList.add(book1);
bookList.add(book2);
// 实体类转换为 json
String book1Str = JSON.toJSONString(book1);
// 多个实体类转换为 json 数组形式的 string
String bookStr = JSON.toJSONString(bookList);
//String 转化为 List<Book>
List<Book> bookList3 = JSON.parseArray(bookStr,Book.class);
}
/**
* String 转化为数组
* String 转化为 ArrayList
*/
public static void StrToArrayList(){
StringBuilder sb = new StringBuilder();
sb.append(“[{“);
sb.append(“\”name\”: \” 教父三部曲 \”,”);
sb.append(” \”author\”: \” 马里奥·普佐 \”,”);
sb.append(” \”price\”: \”100\””);
sb.append(“}]”);
// String 转化为数组
Book[] arrBook = JSON.parseObject(sb.toString(),new TypeReference<Book[]>(){});
List<Book> list = Arrays.asList(arrBook);
for (int i = 0; i < arrBook.length; i++) {
System.out.println(arrBook_.toString());__
}
// String 转化为 ArrayList
ArrayList<Book> bookList= JSON.parseObject(sb.toString(),new TypeReference<ArrayList<Book>>(){});
for(Book book : bookList){
System.out.println(book.toString());
}
}
/**
* map 和 json 互相转换
*/
public static void mapTo(){
Map<String,String> map = new HashMap<>();
map.put(“name”, “ 教父三部曲 ”);
map.put(“author”, “ 马里奥·普佐 ”);
map.put(“price”, “100”);
//map 转换为 json
String json = JSON.toJSONString(map);
//json 转换为 map
Map map1 = JSON.parseObject(json);
System.out.println(map1.toString());
Map<String,String> map2 = (Map<String,String>)JSON.parse(json);
}
}
附 Book 类代码
package heima.itcast.demo.model;
public class Book {
private String name;
private String author;
private int price;
public Book() {
}
public Book(String name, String author, int price) {
this.name = name;
this.author = author;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}_