zoukankan      html  css  js  c++  java
  • Gson反序列json到实体类

    gson在基准测试过程中各项性能接近于Jackson(具体可以看Benchmark of Java JSON libraries)里面的测试,

    本人亲测过,实测结果与他的数据一致,Jackson安全性以及性能稳定性毋庸置疑。

    笔者当初连续遇到过fastjson多个bug,最终放弃他,投入Jackson怀抱;但是Jackson api使用起来配置比较多。

    也就是api不够简洁,有些场景我的json很简单,只需要从json到实体之间互相转换(序列化与反序列化)。

    gson的api比较简单,也是这篇文章的由来,以下是反序列化代码。

    @SerializedName用来指明json中与实体字段名不一致问题。

    import com.google.gson.annotations.SerializedName;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    /***
     * ASR服务器状态
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class ASRServerStatus {
    
    
        /***
         * 当前空闲的worker数目
         */
        @SerializedName("num_workers_available")
        private Integer availWorkers;
    
    
        //以下字段后续在python服务器端采集上来加入,目前接口返回数据中还没有相关字段
    
        /***
         * 已经处理的任务数
         */
        @SerializedName("num_requests_processed")
        private Integer processedRequests;
    
        /***
         * 服务器负载 1分钟
         */
        private Float load1;
    
        /***
         * 服务器负载 5分钟
         */
        private Float load5;
    
        /***
         * 服务器负载 15分钟
         */
        private Float load15;
    
    
        private Float totalMem;
    
        /***
         * Cached/Shared Memory
         */
        private Float sharedMem;
    
        /***
         * 通过公式计算获得: total-buff-used
         */
        private Float availMem;
    
        private Float usedMem;
    }
    import com.google.gson.Gson;
    import com.netmarch.web.open.ws.ASRServerStatus;
    import org.junit.Test;
    
    public class TestGson {
        @Test
        public void deserial()
        {
            String json ="{"num_workers_available": 9, "num_requests_processed": 61}";
            Gson gson =new Gson();
            ASRServerStatus status = gson.fromJson(json, ASRServerStatus.class);
            System.out.println(status);
        }
    }

    结果:

  • 相关阅读:
    关于C语言中类型的理解,有符号无符号的理解以及浮点数的理解
    关于集中注意力,情绪管理,记忆的总结整体
    关于链表逆置的问题
    git中reset和checkout的总结整理
    git中关于分支和stash的理解
    SVN和git的区别
    shell命令之find的用法
    (转载)获取服务器响应时间
    (转载)Spring定时任务的几种实现
    (转载)spring单例和多例详解。如何在单例中调用多例对象
  • 原文地址:https://www.cnblogs.com/passedbylove/p/11934157.html
Copyright © 2011-2022 走看看