zoukankan      html  css  js  c++  java
  • com.alibaba.fastjson.JSON对类对象的序列化与反序列化

    1. 目标

    把类的对象存储到字符串可存储

    2. 类定义

    public interface JsonInterface {
    }
    mport com.alibaba.fastjson.JSON;
    import lombok.Getter;
    import lombok.Setter;
    
    @Setter
    @Getter
    public class JsonVo implements JsonInterface {
        private String id;
        private String name;
    
        public JsonVo(String id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
    
        @Override
        public String toString() {
            return String.format("id:%s   ||||  name:%s", id, name);
    
        }
    }

    3. 测试

        public void test() {
            JsonInterface tmp = new JsonVo("id1", "name1");
            String json = JSON.toJSONString(tmp);
    
            System.out.println(json);
            JsonInterface jsonVo = JSON.parseObject(json, JsonVo.class);
            System.out.println(jsonVo);
    
            System.out.println("--------");
    
            byte[] bytes = JSON.toJSONBytes(tmp);
            System.out.println(bytes);
            JsonInterface jsonVo2 = JSON.parseObject(bytes, JsonVo.class);
            System.out.println(jsonVo2);
        }

    结果

    {"id":"id1","name":"name1"}
    id:id1   ||||  name:name1
    --------
    [B@383534aa
    id:id1   ||||  name:name1

    4. Fastjson

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

    5. TypeReference

    例1

     public void test2() {
            List<Integer> list = new ArrayList<>();
            list.add(1);
            list.add(9);
            list.add(4);
            list.add(8);
            JSONObject jsonObj = new JSONObject();
            jsonObj.put("a", list);
            System.out.println(jsonObj);
    
            List<String> list2 = jsonObj.getObject("a", new TypeReference<List<Integer>>(){});
            System.out.println(list2);
        }

    结果

    {"a":[1,9,4,8]}
    [1, 9, 4, 8]
    

    例2

    public void test3() {
            List<JsonVo> list = new ArrayList<>();
            list.add(new JsonVo("id1", "name1"));
            list.add(new JsonVo("id2", "name2"));
            list.add(new JsonVo("id3", "name3"));
            JSONObject jsonObj = new JSONObject();
            jsonObj.put("a", list);
            System.out.println(jsonObj);
    
            List<String> list2 = jsonObj.getObject("a", new TypeReference<List<JsonVo>>(){});
            System.out.println(list2);
        }

    结果

    {"a":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"},{"id":"id3","name":"name3"}]}
    [id:id1   ||||  name:name1, id:id2   ||||  name:name2, id:id3   ||||  name:name3]
    

      

  • 相关阅读:
    也八卦一把:李开复离开微软,投奔Google
    用于苹果OS Ⅹ Dashboard Widgets 的Google Map小部件
    下一代Hotmail和MSN Messenger最新界面截图
    Go2Map也开放了地图API
    《Excel与VBA程序设计》第三章及附录
    非广告: 365key的好处(随时收集)
    VS2005多线程程序在IDE下调试的一个问题
    买了《.net模式--架构、设计和过程》
    Expect 在网络管理中发挥着重要作用
    source insight 快捷键
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/9886425.html
Copyright © 2011-2022 走看看