Java 如何使用jackson映射器映射空字符串和映射
我的Json字符串是Java 如何使用jackson映射器映射空字符串和映射,java,json,jackson,Java,Json,Jackson,我的Json字符串是 { "FieldInfo":{ "Field1":{ "FieldName":"test1", "Values":"" }, "Field2":{ "FieldName":"test2", "Values":{ "test":"5", "test1":"2" } }
{
"FieldInfo":{
"Field1":{
"FieldName":"test1",
"Values":""
},
"Field2":{
"FieldName":"test2",
"Values":{
"test":"5",
"test1":"2"
}
}
}
}
当映射值归档时,我面临问题。在我的json字符串中,字段值要么是空字符串,要么是映射。我正在映射下面提到的变量中的值字段
@JsonProperty("Values")
private Map<String, String> values;
我已经使用了
@JsonInclude(Include.NON\u NULL)
。但它不起作用。当值为空字符串时,您似乎正在尝试用map映射字符串
@JsonProperty("Values")
private Map<String, String> values;
@JsonProperty(“值”)
私有地图值;
Jackson将使用setter方法映射值。Jackson将检测到此setter,并在从JSON读取属性时使用它。因此,在setter中,可以检查字段是map还是空字符串。
为此,您可以接受对象。然后检查一下。。正如下面所说
public void setValues(Object values) {
if(values instanceof String){
this.values = null;
}else{
this.values = (Map<String, String>) values;
}
}
public void setValues(对象值){
if(字符串实例的值){
this.values=null;
}否则{
this.values=(Map)值;
}
}
希望。。。这将有助于…您无法从字符串初始化映射,即,代替
“值”:“
它必须是“值”:{}
。我从第三方API获取json,因此无法更改json格式。
public void setValues(Object values) {
if(values instanceof String){
this.values = null;
}else{
this.values = (Map<String, String>) values;
}
}