问题
最近在设备网关开发的时候,json字符串转JavaBean时遇到了一个问题:由于json字符串中的字母都是首字母大写,导致jackson找不到相应的Java bean属性。
json字符串:
{
"MsgName":"ReadDevData",
"MsgSource":"0022D11BF0710743",
"MsgDest":"0000000000000000",
"Result":0,
"MsgContent":[
{
"DataName":"SwitchStatus",
"DataValue":0
},
{
"DataName":"Voltage",
"DataValue":237900
}
]
}
复制代码
JavaBean
@Data
public class CallBackDataEntity {
private String MsgName;
private String MsgSource;
private String MsgDest;
private String Result;
private List<CallBackData> MsgContent;
}
@Data
public class CallBackData implements Serializable {
private String DataName;
private String DataValue;
}
复制代码
两个解决办法
一:将所有的属性设置成 public
二:使用 @JsonProperty 注解
首先JavaBean属性以小写开头,然后@JsonProperty(value = "json里的字符串命名")
@Data
public class CallBackDataEntity {
@JsonProperty(value = "MsgName")
private String msgName;
@JsonProperty(value = "MsgSource")
private String msgSource;
@JsonProperty(value = "MsgDest")
private String msgDest;
@JsonProperty(value = "Result")
private String result;
@JsonProperty(value = "MsgContent")
private List<CallBackData> msgContent;
}
@Data
public class CallBackData implements Serializable {
@JsonProperty(value = "DataName")
private String dataName;
@JsonProperty(value = "DataValue")
private String dataValue;
}