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);
        }
    }

    结果:

  • 相关阅读:
    VirtualBox 命令行操作
    [大数据入门]实战练习 安装Cloudera-Hadoop集群
    DB2 Package Issues and Solution
    关于《阿里巴巴Java开发规约》插件的安装与使用
    Spring学习笔记:Spring概述,第一个IoC依赖注入案例
    SpringMVC:系统认识一下maven
    利用JS提交表单的几种方法和验证(必看篇)
    a标签调用js的几种方法
    使用BigDecimal进行精确运算
    Maven中settings.xml的配置项说明
  • 原文地址:https://www.cnblogs.com/passedbylove/p/11934157.html
Copyright © 2011-2022 走看看