Java 如何使用jackson映射器映射空字符串和映射

Java 如何使用jackson映射器映射空字符串和映射,java,json,jackson,Java,Json,Jackson,我的Json字符串是 { "FieldInfo":{ "Field1":{ "FieldName":"test1", "Values":"" }, "Field2":{ "FieldName":"test2", "Values":{ "test":"5", "test1":"2" } }

我的Json字符串是

{  
   "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;
  }
 }