0
点赞
收藏
分享

微信扫一扫

Gson反序列json到实体类

minute_5 2022-08-18 阅读 51

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

结果:

Gson反序列json到实体类_json

 

举报

相关推荐

0 条评论