乐趣区

阿里巴巴FastJson对数据的常用操作

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;
    }
}_

退出移动版