乐鱼电竞

  • 教育行业A股IPO第一股(股票代码 003032)

    全国咨询/投诉热线: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

    0 分享到:
    和我们在线交谈!
    【网站地图】【sitemap】