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

结果:

原文地址:https://www.cnblogs.com/passedbylove/p/11934157.html