Java 使用自定义jackson序列化程序替换枚举值
我正在Kotlin写一个spring boot项目。我拥有的一个POJO/数据类Java 使用自定义jackson序列化程序替换枚举值,java,json,spring,kotlin,jackson,Java,Json,Spring,Kotlin,Jackson,我正在Kotlin写一个spring boot项目。我拥有的一个POJO/数据类 数据类员工( //……其他财产 val名称:名称 ) 枚举类名称{ 六月中旬,森 } 默认情况下,此Employee对象序列化为{“指定”:“JUN”}。我想添加一个自定义序列化程序,这样这个对象就可以像这样进行序列化,{“designation”:“Junior”} 我添加的序列化程序 @JsonComponent 类命名序列化{ 类序列化程序:JsonObjectSerializer(){ 重写对象(指定:指
数据类员工(
//……其他财产
val名称:名称
)
枚举类名称{
六月中旬,森
}
默认情况下,此Employee
对象序列化为{“指定”:“JUN”}
。我想添加一个自定义序列化程序,这样这个对象就可以像这样进行序列化,{“designation”:“Junior”}
我添加的序列化程序
@JsonComponent
类命名序列化{
类序列化程序:JsonObjectSerializer(){
重写对象(指定:指定,生成:JsonGenerator,提供程序:SerializerProvider){
一般书面限制(名称:pretty)
}
private val Designation.pretty:字符串
get()=当(此){
名称:JUN->“初级”
名称.MID->“中级”
名称.SEN->“高级”
}
}
}
但是在运行这个时,我得到了这个错误
JSON encoding error: Can not write a string, expecting field name (context: Object); nested exception is com.fasterxml.jackson.core.JsonGenerationException: Can not write a string, expecting field name (context: Object)
我还尝试使用gen.writeStringField(“designation”,designation.pretty)
,但它将对象序列化为如下所示
{
"designation": {"designation": "Mid-Level"}
}
您应该向枚举类添加一个属性,并用
@JsonValue
标记它。您应该向枚举类添加一个属性,并用@JsonValue
标记它。@JsonValue
不足的具体原因是什么?@JsonValue
不足的具体原因是什么?