我需要在通過Jackson ObjectMapper
序列化對象時添加@JsonIgnore
帶註釋的字段。我知道你可能會讓我從我的課程中刪除@JsonIgnore
註釋,但我需要在我的應用程序的某些部分忽略它們。而在我的應用程序的另一部分,我需要在我的json
字符串中有這些@JsonIgnore
註釋字段。如何在Jackson ObectMapper序列化中添加@JsonIgnore帶註釋的字段
0
A
回答
4
您可以定義一個SimpleBeanPropertyFilter和FilterProvider。
先給相應的類這樣的自定義過濾器:
@JsonFilter("firstFilter")
public class MyDtoWithFilter {
private String name;
private String anotherName;
private SecondDtoWithFilter dtoWith;
// get set ....
}
@JsonFilter("secondFilter")
public class SecondDtoWithFilter{
private long id;
private String secondName;
}
,這是你將如何動態序列化你的對象。
ObjectMapper mapper = new ObjectMapper();
// Field that not to be serialised.
SimpleBeanPropertyFilter firstFilter = SimpleBeanPropertyFilter.serializeAllExcept("anotherName");
SimpleBeanPropertyFilter secondFilter = SimpleBeanPropertyFilter.serializeAllExcept("secondName");
FilterProvider filters = new SimpleFilterProvider().addFilter("firstFilter", firstFilter).addFilter("secondFilter", secondFilter);
MyDtoWithFilter dtoObject = new MyDtoWithFilter();
String dtoAsString = mapper.writer(filters).writeValueAsString(dtoObject);
0
我會建議通過反射來刪除並重新添加它們,當你的具體映射發生時。
0
這表明你有兩個不同的模型與一些共同的元素。我會重新檢查你的模型。
0
public class MainProgram {
@JsonFilter("nameRemoveFilter")
public static class User{
private String name;
private String age;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
FilterProvider filters = new SimpleFilterProvider().addFilter("nameRemoveFilter",
SimpleBeanPropertyFilter.filterOutAllExcept("name","age"));
// and then serialize using that filter provider:
User user = new User();
try {
String json = mapper.writer(filters).writeValueAsString(user);
System.out.println(json);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Works for Latest version of Jackson after 2.0
相關問題
- 1. Wildfly和Jackson @JsonIgnore註釋
- 2. jackson反序列化器 - 獲取模型字段註釋列表
- 3. 如何繞過@JsonIgnore註釋?
- 4. 如何自動序列化JsonSerializer類中的所有帶註釋的字段
- 5. Spring-MVC Jackson。豆序列化期間添加字段
- 6. 如何使用Jackson註釋序列化此JSON?
- 7. 如何排除Jackson json序列化(Scala)中的字段
- 8. Jersey Jackson序列化父字段
- 9. Jackson - 序列化時變換字段值
- 10. Jackson序列化過濾字段
- 11. Java到Jackson JSON序列化:Money字段
- 12. Jackson ::將額外的字段添加到序列化中的對象
- 13. Jackson Deserializer如何遞歸反序列化將@JsonFormat註釋考慮在內的字段?
- 14. Can Jackson可以反序列化爲帶有註釋的Map <Long,String>嗎?
- 15. 在java中強制註釋字段包含帶註釋的類
- 16. 不能把@JsonIgnore註釋在字段和setter上 - 映射例外
- 17. 如何僅序列化帶有自定義註釋註釋的屬性
- 18. 在Django REST Framework序列化器中嵌套註釋字段
- 19. 在JSON序列化中注入字段
- 20. Jackson @JsonBackReference帶註釋的屬性
- 21. Jackson自定義值序列化的自定義註釋
- 22. 如何禁用某些字段的Jackson序列化功能WRITE_NUMBERS_AS_STRINGS?
- 23. 如何使用Jackson不使用註釋來排除字段?
- 24. 用java在Jackson中自定義JSON字段的反序列化?
- 25. 如何添加組字段中@Query註釋Solr中
- 26. 在Java(7)中,如何獲取帶註釋字段的值
- 27. 添加註釋列
- 28. 如何防止Jackson序列化多態類型的註釋屬性?
- 29. 如何使用Jackson註釋反序列化來自HttpResponse的JSON對象?
- 30. 如何防止Eclipse格式化程序在註釋中的註釋之後添加空白字符?
也許考慮使用傑克遜模塊? – fge