Java 如何使用BeanSerializerModifier添加新属性';改变属性?
我的代码:Java 如何使用BeanSerializerModifier添加新属性';改变属性?,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我的代码: 私有类CustomBeanSerializerModifier扩展了BeanSerializerModifier{ @凌驾 公共列表changeProperties(SerializationConfig配置, Bean描述Bean描述,列出Bean属性){ List beanPropertiesToIgnore=new ArrayList(); 如果(!CollectionUtils.isEmpty(fieldSettingsMap)){ 对于(int i=0;i
私有类CustomBeanSerializerModifier扩展了BeanSerializerModifier{
@凌驾
公共列表changeProperties(SerializationConfig配置,
Bean描述Bean描述,列出Bean属性){
List beanPropertiesToIgnore=new ArrayList();
如果(!CollectionUtils.isEmpty(fieldSettingsMap)){
对于(int i=0;i
我想在这里添加一个新属性,比如String identifier=“someValue”;
我希望将这个属性添加到序列化的json中(附带一些条件)
BeanPropertyWriter的唯一构造函数接受大量参数:
new BeanPropertyWriter(propDef, member, contextAnnotations, declaredType, ser, typeSer, serType, suppressNulls, suppressableValue)
我可以在这里添加一个新的属性吗?
如果是,我应该在这里传递给构造函数的值是什么?这不是一种简单的方法,但您可以尝试以下方法 从你的代码中,我看到了这一点
BeanPropertyWriter beanPropertyWriter = beanProperties.get(i);
使用新属性的复制构造函数创建此beanPropertyWriter的副本(使用以下方法,因为原始构造函数受保护,因此不可见)
这将使用复制构造函数更改字段名
不确定值部分,但似乎_字段保持相同。
您是否可以通过调试器检查值来自哪个字段,并相应地更改它。
比如说,如果_字段持有该值,那么这可能会起作用
public class CustomBeanPropertyWriter extends BeanPropertyWriter {
protected Field setField(Field newValue){
super._field = newValue;
}
protected CustomBeanPropertyWriter(BeanPropertyWriter base, String newFieldName, Field newFieldValue) {
super(base, new SerializedString(newFieldName));
setField(newFieldValue);
}
}
public class CustomBeanPropertyWriter extends BeanPropertyWriter {
protected Field setField(Field newValue){
super._field = newValue;
}
protected CustomBeanPropertyWriter(BeanPropertyWriter base, String newFieldName, Field newFieldValue) {
super(base, new SerializedString(newFieldName));
setField(newFieldValue);
}
}