繁体   English   中英

使用Jackson的Scala枚举的JSON序列化

[英]JSON serialization of Scala enums using Jackson

在本文之后https://github.com/FasterXML/jackson-module-scala/wiki/Enumerations

枚举声明为

object UserStatus extends Enumeration {
  type UserStatus = Value
  val Active, Paused = Value
}

class UserStatusType extends TypeReference[UserStatus.type]
case class UserStatusHolder(@JsonScalaEnumeration(classOf[UserStatusType]) enum:   UserStatus.UserStatus)

DTO被声明为

class UserInfo(val emailAddress: String, val  userStatus:UserStatusHolder) {

}

并且序列化代码是

val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)

def serialize(value: Any): String = {
    import java.io.StringWriter
    val writer = new StringWriter()
    mapper.writeValue(writer, value)
    writer.toString
}

生成的JSON序列化为

{
    "emailAddress":"user1@test.com",
    "userStatus":{"enum":"Active"}
}

是否有可能获得以下表格?

{
    "emailAddress":"user1@test.com",
    "userStatus":"Active"
}

你有没有尝试过:

case class UserInfo(
   emailAddress: String, 
   @JsonScalaEnumeration(classOf[UserStatusType]) userStatus:   UserStatus.UserStatus
)

杰克逊维基的例子有点误导。 您不需要holder类。 它只是具有该元素的事物的示例。 您需要的是注释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM