JSON反序列化问题与杰克逊

时间:2014-10-22 14:40:13

标签: java json jackson deserialization

我有一个像这样的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注释来完成吗?

感谢您的帮助

1 个答案:

答案 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响应更容易接受。