FastJson使用

此文为转载,方便自己查看,原文地址:

https://blog.csdn.net/xs_challenge/article/details/77456728

Fastjson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Fastjson can work with arbitrary Java objects including pre-existing objects that you do not have source-code of.

Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。 
阿里巴巴的开源地址为:https://github.com/alibaba/fastjson

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解析和拼接了。


import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

public class FastJson {

    /**
     * String转化为实体类Book
     */
    @Test
    public 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.toString());
    }

    /**
     * String转化为jsonObject
     */
    @Test
    public 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>
     */
    @Test
    public 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);

        System.out.println();
    }


    /**
     * String转化为数组
     * String转化为ArrayList
     */
    @Test
    public 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互相转换
     */
    @SuppressWarnings("unused")
    public 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);
        Map<String,String> map2 = (Map<String,String>)JSON.parse(json);

    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值