加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

解决fastjson、Jackson、Gson解析Json数据时,key为Java中关键字

发布时间:2020-12-16 18:50:13 所属栏目:百科 来源:网络整理
导读:博文首次发布于个人博客:吾勇士的博客 无论我们在使用fastjson、Jackson还是Gson,我们在用json转换为实体类时,都是根据json数据建立对应实体类,但比较恶心的是,有时,有些服务商返回的json报文中,key值为java中的关键字,我们没法用关键字,当做一个类

博文首次发布于个人博客:吾勇士的博客

无论我们在使用fastjson、Jackson还是Gson,我们在用json转换为实体类时,都是根据json数据建立对应实体类,但比较恶心的是,有时,有些服务商返回的json报文中,key值为java中的关键字,我们没法用关键字,当做一个类的成员变量,不过不代表我们就没有其他的办法解决了;

先给个测试实体类:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class ClientInfoEntity {
private Long id;
// 客户编号
@SerializedName ( "abstract" )
@JSONField (name= )
String abstract_;
@Override
public String toString() {
return "ClientInfoEntity [id=" + id + ",abstract_=" + abstract_ + "]" ;
}
String getAbstract_() {
return abstract_;
}
void setAbstract_(String abstract_) {
this .abstract_ = abstract_;
}
setId(Long id) {
.id = id;
}
}

解决方案如下:

①使用fastjson:

则在实体类中的对应成员变量中加上以下注解:

2
)
String abstract_;

②使用gson

)
String abstract_;
③使用jackson

@JsonProperty 当然了,三种注解是不冲突的,如果项目中使用多种方式解析,可以将对应的注解都加上,如给的测试实体类,我就加了fastjson和gson的两种注解

单元测试方法:
?
7
@org .junit.Test
testGson(){
String json = "{id:1,abstract:231}" ;
ClientInfoEntity clientInfoEntity = new Gson().fromJson(json,ClientInfoEntity. );
System.out.println(clientInfoEntity);
System.out.println(JSON.parSEObject(json,monospace!important; font-size:1em!important; min-height:auto!important">));
结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!