更新时间:2018年12月13日14时38分 来源:传智播客 浏览次数:
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[i].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); }}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; }}