Java 为什么jackson.YAML将“is\u error”替换为“u error”字段?
以下Kotlin代码打印的是Java 为什么jackson.YAML将“is\u error”替换为“u error”字段?,java,kotlin,jackson,yaml,Java,Kotlin,Jackson,Yaml,以下Kotlin代码打印的是\u error:false,而不是is\u error:false 如何更改它以保持原始的is\u errorname import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import c
\u error:false
,而不是is\u error:false
如何更改它以保持原始的is\u error
name
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator
fun to_yaml(v: Any): String {
val mapper = ObjectMapper(
YAMLFactory()
.enable(YAMLGenerator.Feature.MINIMIZE_QUOTES)
.disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)
.disable(YAMLGenerator.Feature.SPLIT_LINES)
// .enable(YAMLGenerator.Feature.INDENT_ARRAYS)
// .enable(YAMLGenerator.Feature.LITERAL_BLOCK_STYLE)
)
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
return mapper.writeValueAsString(v)
}
class Result(
val is_error: Boolean
)
fun main() {
println(to_yaml(Result(false)))
}
该字段应命名为
error
,而不是is\u error
。这种结果可能是因为“是”和“有”是布尔字段访问器的神奇前缀,就像“get”是普通字段的前缀一样:data
->getData
,error
->hasError
/iError
,并且存在删除这些前缀的逻辑。我不知道在这种情况下如何禁用该行为。@luk2302谢谢,但我不能更改字段名,因为它是一个共享架构,用于多个具有多种语言的项目。在Java中,该字段将是@JsonProperty(“is_error”)
,但不确定在Kotlin中如何工作。