将java对象映射到JSON的困难
我试图将JSON映射到java对象,反之亦然。这样,类的未知参数通过将java对象映射到JSON的困难,java,json,jackson,Java,Json,Jackson,我试图将JSON映射到java对象,反之亦然。这样,类的未知参数通过@JsonAnySetter方法映射到java.util.Map。但是在从java对象返回json时,我得到了错误的输出。我正在使用fasterxml库 这是我的java对象: import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.ja
@JsonAnySetter
方法映射到java.util.Map
。但是在从java对象返回json时,我得到了错误的输出。我正在使用fasterxml库
这是我的java对象:
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class TestClass {
private String context_id;
private Map<String, String> properties = new HashMap<>();
public String getContext_id() {
return context_id;
}
public void setContext_id(String context_id) {
this.context_id = context_id;
}
@JsonAnySetter
public void set(String fieldName, String value){
this.properties.put(fieldName, value);
}
@JsonAnyGetter
public Map<String, String> any() {
return this.properties;
}
public String get(String fieldName){
return this.properties.get(fieldName);
}
}
当我试图从java对象获取JSON时,我得到如下结果:
{
"context_id": "14",
"properties" : {
"io": "odp"
},
"io": "odp"
}
但我应该像这样把它拿回来:
{
"context_id": "14",
"properties" : {
"io": "odp"
}
}
我没有得到它。删除get方法,一切都会好起来。作为替代方案,您可以在getter上设置@JsonIgnore(请参见
).谢谢大家的帮助。我已经解决了这个问题。 1.我已经把这部分移走了
@JsonAnyGetter
public Map<String, String> any() {
return properties;
}
@JsonAnyGetter
公共地图任意(){
归还财产;
}
你的意思是你的预期产出,还是你希望产出与你的投入相似?是的,我的意思是。我的预期输出是-
{“context\u id”:“14”,“properties”:{“io”:“odp”}
如果删除get方法,我将无法获取存储到map中的未知参数,我希望我的输出是这样-{“context\u id”:“14”,“properties”:{“io”:“odp”}
不是这个-{“context_id”:“14”,“properties”:{“io”:“odp”},“io”:“odp”}
当然。你用上面提到的答案试过了吗?是的。因为我的json是{“context_id”:“12”,“yio”:“odjp”}
不是预期的。
@JsonAnyGetter
public Map<String, String> any() {
return properties;
}