我有一个像这样的json对象
{
"id":23 ,
"key": "AKEY",
"description": {
"plain": {
"value": "This is an example",
"representation": "plain"
}
}
}
我想将它映射到此对象
public class JsonResponse {
private int id;
private String key;
private String name;
private String type;
private String description;
/*usual getters and setters*/
}
我像这样使用JSONSerialiser
JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(responseEntity);
但是如何映射" description.plain.value"到" JsonResponse.description"?
可以使用jackson注释来完成吗?
感谢您的帮助
答案 0 :(得分:2)
我发现此帖Binding JSON child object property into Java object field in Jackson部分解决了我的问题。
我编写了两个setDescription()方法,一个是我自己在我的代码中使用的方法,另一个是由jacskon调用的方法
@JsonProperty(value = "description")
public void setDescription(Map<String, Map<String,String>> description) {
this.description = description.get("plain").get("value");
}
public void setDescription(String description) {
this.description = description;
}
看起来需要使用JsonProperty注释才能让杰克逊使用正确的设置器。
只要它是一个“短嵌套”属性,我仍然可以使用它,但我认为Beri响应对于复杂的JSON响应更容易接受。