【问题标题】:JSON deserialization issue with jackson杰克逊的 JSON 反序列化问题
【发布时间】:2014-12-18 01:31:10
【问题描述】:

我有一个这样的 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*/
}

我像这样使用 JSONSerializer

 JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(responseEntity);

但是如何将“description.plain.value”映射到“JsonResponse.description”?

这可以使用杰克逊注解来完成吗?

感谢您的帮助

【问题讨论】:

标签: java json jackson deserialization


【解决方案1】:

我发现这篇帖子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 响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2016-04-18
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多