在一次开发中遇到了一个转换的小问题,跟大家分享一下;如果使用fastjson转换json的话大写的值是无法映射到java对象中的:
常规写法:
public class NettyInfo {
private String boxname;
private String wzid;
private String msgtype;
private String goods;
private String message;
public String getBoxname() {
return boxname;
}
public String getWzid() {
return wzid;
}
public String getMsgtype() {
return msgtype;
}
public String getGoods() {
return goods;
}
public String getMessage() {
return message;
}
public void setBoxname(String boxname) {
this.boxname = boxname;
}
public void setWzid(String wzid) {
this.wzid = wzid;
}
public void setMsgtype(String msgtype) {
this.msgtype = msgtype;
}
public void setGoods(String goods) {
this.goods = goods;
}
public void setMessage(String message) {
this.message = message;
}
}
可以看出在上一个测试当中,含有大写json无法映射到java对象中的。
解决办法:在属性上添加@JSONField(name = "xxx")注解
import com.alibaba.fastjson.annotation.JSONField;
public class NettyInfo {
@JSONField(name = "BOXNAME")
private String boxname;
@JSONField(name = "WZID")
private String wzid;
@JSONField(name = "MSGTYPE")
private String msgtype;
@JSONField(name = "GOODS")
private String goods;
@JSONField(name = "MESSAGE")
private String message;
public String getBoxname() {
return boxname;
}
public String getWzid() {
return wzid;
}
public String getMsgtype() {
return msgtype;
}
public String getGoods() {
return goods;
}
public String getMessage() {
return message;
}
public void setBoxname(String boxname) {
this.boxname = boxname;
}
public void setWzid(String wzid) {
this.wzid = wzid;
}
public void setMsgtype(String msgtype) {
this.msgtype = msgtype;
}
public void setGoods(String goods) {
this.goods = goods;
}
public void setMessage(String message) {
this.message = message;
}
}
当然啦,如果你不想加注解,也可以使用谷歌的Gson进行转换的。没有大小写的说法。