在开过发过程中,遇到将一个实体类转换成json对象,转义后得到的字符串中,存在大小写转义错误。
在测试中发现:
1、字段名称都大写(AAA),不会有问题。
2、字段名称都小写(aaa),不会有问题。
3、字段名称首字母大写,其余大小写都存在(AaBb),得到的后的是:aaBb;
因为基于分离开发,要严格按照规定的协议去做,所以这样是不被允许的。
解决方法:
引入jar包:jackson-databind-2.8.8.jar,jackson-annotations-2.8.8.jar, jar文件自行下载
干货代码实体类:
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ProcessInstruct {
//设备名称
//这个地方使用JsonProperty 自定义字段名称大小写格式
@JsonProperty(value="DevID")
private String DevID;
//信息类型
@JsonProperty(value="BID")
private String BID;
//控制命令ID
@JsonProperty(value="CID")
private String CID;
//参数列表
@JsonProperty(value="paramList")
private ParamList paramList;
//@JsonIgnore
public String getDevID() {
return DevID;
}
@JsonIgnore
public void setDevID(String DevID) {
this.DevID = DevID;
}
@JsonIgnore
public String getBID() {
return BID;
}
@JsonIgnore
public void setBID(String bID) {
BID = bID;
}
@JsonIgnore
public String getCID() {
return CID;
}
@JsonIgnore
public void setCID(String cID) {
CID = cID;
}
@JsonIgnore
public ParamList getParamList() {
return paramList;
}
@JsonIgnore
public void setParamList(ParamList paramList) {
this.paramList = paramList;
}
}
测试方法:
public static void main(String[] args) {
ProcessInstruct pi =new ProcessInstruct();
//省略传值
ObjectMapper mapper = new ObjectMapper();
String str = null;
try {
str = mapper.writeValueAsString(pi);
} catch (JsonProcessingException e1) {
e1.printStackTrace();
}
System.err.println(str);
}
输出结果:
{"DevID":"97","BID":"61441","CID":"16897","paramList":{"Count":2,"Params":["1092","666"]}}
网上还有很多的其他方法,没有来的急测试,这个方法也许不是很好,希望大家给出意见和更好地方法。