全国咨询/投诉热线:400-618-4000

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

更新时间: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);
    }
}
附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;
    }
}


作者:传智播客JavaEE培训学院

首发:http://java.itcast.cn

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额