用Jackson反序列化嵌套JSON

时间:2020-08-28 15:21:40

标签: java json jackson

我正在尝试在Spring Boot应用程序中将嵌套的JSON反序列化为单个DTO。 JSON:

{"productId": "xyz123",
 "description": "some_description",
 "value": "123",
 "boughtOnDate": "2020-05-20 14:22:58.000662",
 "details": {
   "material": "some_material",
   /// another 20 entries
  }
}

DTO:

@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
public class Item {
  @Id
  private String productId;
  private String description;
  private Integer value;
  private Timestamp boughtOnDate;
  private String material;
  // another 20 fields that are in the nested part of the json

  // getters & setters

我目前的解决方案是像这样在Item类中解压缩嵌套的json:

@JsonProperty("details")
private void unpackNestedJson(Map<String, Object> details) {
  this.material = (String) details.get("material");
  // and another 20 lines for unpackacking the rest from the nested part

虽然unpackNestedJson可以很好地工作并且很好地完成了工作,但是它感到很麻烦,因为有很多数据要从JSON的嵌套部分中解包(JSON的“详细信息”之下和之上的所有条目都应作为字段进入Item实体类中只要)。我的问题是-将嵌套的JSON解压缩到单个DTO中是否有更简单/优雅的方法?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

不,我认为这是正确的方法,但是,如果您想探索另一个选择,则可以在Item内部使用带有Material属性的Details对象。然后,您可能只需要一些具有父DTO权限的getter / setter方法,就可以实现相同的行为。