天天看点

Jackson解析首字母大写的json字符串

问题

最近在设备网关开发的时候,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;
}