Ral*_*lph 4 java spring json jackson
我在Spring应用程序中使用Jackson 1.8.3将Java对象映射到JSON.
我的一个Java Class(Child)扩展了一个超类(Parent),它是Libary的一部分,所以我无法修改它.(特别是我无法添加注释.)
我正在使用,@JsonAutoDetect(JsonMethod.NONE)因为我只需要来自对象的一小部分字段,而不是我正在使用的@JsonProperty.
class Parent {
public long getId(){...};
...
}
@JsonAutoDetect(JsonMethod.NONE)
class Child extends Parent {
@JsonProperty
private String title;
}
Run Code Online (Sandbox Code Playgroud)
但我需要的一个领域是id来自超类的字段,但我不知道如何告诉杰克逊注意这个字段,而不修改父类(因为我无法修改它).
如果将注释放在getter上(而不是直接放在字段上),则可以覆盖该getId()方法(如果它不是超类中的final)并为其添加注释.
class Parent {
public long getId(){...};
...
}
@JsonAutoDetect(JsonMethod.NONE)
class Child extends Parent {
private String title;
@JsonProperty
public String getTitle() {...}
@Override
@JsonProperty
public long getId() {
return super.getId();
}
}
Run Code Online (Sandbox Code Playgroud)
我无法添加注释
您可以使用混合添加注释.有关详细信息,请参阅http://wiki.fasterxml.com/JacksonMixInAnnotations.
根据类feild /方法结构的其余部分,另一种可能有用的方法是通过ObjectMapper配置字段/方法的可见性访问.以下行演示了如何进行此类配置,而不一定是您需要的特定配置.
mapper.setVisibilityChecker(mapper.getVisibilityChecker().withFieldVisibility(Visibility.ANY));
Run Code Online (Sandbox Code Playgroud)
我正在使用@JsonAutoDetect(JsonMethod.NONE)因为我只需要来自对象的一小部分字段,而是使用@JsonProperty
我应该意识到这是可能的.我必须更新我的博文.谢谢.
| 归档时间: |
|
| 查看次数: |
18351 次 |
| 最近记录: |