我知道我们可以使用Jackson MixIn来重命名属性或忽略属性(请参见示例here)。但是可以添加属性吗?
添加的属性可以是:
getWidth()
和getHeight()
的属性,但我们想同时忽略两者,而导出getArea()
)Information
,而该成员又有一个成员Description
,而我们想为description
提供一个新属性,并跳过嵌套Information
的结构)答案 0 :(得分:1)
“混合”注释是一种将注释与类相关联的方法, 无需修改(目标)类本身,最初旨在 帮助支持第三方数据类型,用户无法将源修改为 添加注释。
使用混入,您可以:
1.定义“''混合类”(或接口)的注释
2.将与“目标类”(或接口)一起使用 出现
3.好像“目标类”具有“混合”的所有注释 类具有(用于配置序列化/ 反序列化)
要解决您的问题,您可以:
df = spark.table('your_table')
display(df)
。POJO
转换为POJO
并添加/删除节点。Map
扩展自定义序列化程序。参见:Jackson custom serialization and deserialization。例如,要向每个对象添加恒定版本,可以将其包装在com.fasterxml.jackson.databind.ser.BeanSerializerModifier
类中:
Verisoned
现在,如果包装一个class Versioned {
private final String version;
@JsonUnwrapped
private final Object pojo;
public Versioned(String version, Object pojo) {
this.version = version;
this.pojo = pojo;
}
public String getVersion() {
return version;
}
public Object getPojo() {
return pojo;
}
}
对象:
Arae(width, height)
输出将是:
Area area = new Area(11, 12);
String json = mapper.writeValueAsString(new Versioned("1.1", area));