Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用自定义jackson序列化程序替换枚举值_Java_Json_Spring_Kotlin_Jackson - Fatal编程技术网

Java 使用自定义jackson序列化程序替换枚举值

Java 使用自定义jackson序列化程序替换枚举值,java,json,spring,kotlin,jackson,Java,Json,Spring,Kotlin,Jackson,我正在Kotlin写一个spring boot项目。我拥有的一个POJO/数据类 数据类员工( //……其他财产 val名称:名称 ) 枚举类名称{ 六月中旬,森 } 默认情况下,此Employee对象序列化为{“指定”:“JUN”}。我想添加一个自定义序列化程序,这样这个对象就可以像这样进行序列化,{“designation”:“Junior”} 我添加的序列化程序 @JsonComponent 类命名序列化{ 类序列化程序:JsonObjectSerializer(){ 重写对象(指定:指

我正在Kotlin写一个spring boot项目。我拥有的一个POJO/数据类

数据类员工(
//……其他财产
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
不足的具体原因是什么?