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

结果:

 

posted on 2019-11-26 11:08  你不知道的浪漫  阅读(904)  评论(0编辑  收藏  举报