FasterXML / FasterXML/jackson-annotations

Add @JsonWrapped (to complement @JsonUnwrapped)

未关闭
#42 16 条评论 89 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
1.1k
派生
342
平均合并
8 小时 53 分钟
30 天内合并 PR
2

描述

Re-rasing this issue from the old Jira bug tracker: https://jira.codehaus.org/browse/JACKSON-781

It was suggested this should be raised in the [data bind](https://github.com/FasterXML/jackson-databind/issues) project, but as it is an annotation, this seemed a better fit.

This is the original issue description:

> @JsonUnwrapped allows people who want a more compressed JSON hierarchy than their POJO to affect the process, but there is no option for the reverse. I have a REST service producing unnecessary additional layers of abstraction that i would like to exclude from my Java POJOs rather than writing all sorts of unseemly wrapper classes.

I agree this would be a great feature to avoid unnecessary wrappers on the Java side when consuming JSON APIs.

I'd picture a new annotation that would take a form along the lines of:

``` java
@JsonWrapped("address")
@JsonProperty("house_number")
private String houseNumber;
```

or it could be an additional parameter of the `@JsonProperty` annotation:

``` java
@JsonProperty(value="house_number", wrapped="address")
private String houseNumber;
```

or, possibly, the value parameter of the `@JsonProperty` annotation could specify the object hierarchy:

``` java
@JsonProperty("address.house_number")
private String houseNumber;
```

This may introduce backwards compatibility issues, though, as it would mean this behaved differently than it currently does.

It would be good if it could also unwrap multiple levels, such as:

``` java
@JsonWrapped("contact_details.address")
@JsonProperty("house_number")
private String houseNumber;
```

Though, this would mean the value of the `@JsonWrapped` annotation was parsed differently than the value of the `@JsonProperty` annotation (as `"contact_details.address"` in the `@JsonProperty` annotation would refer to an object key named "contact_details.address").

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。