以下文章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)
Run Code Online (Sandbox Code Playgroud)
DTO被宣布为
class UserInfo(val emailAddress: String, val userStatus:UserStatusHolder) {
}
Run Code Online (Sandbox Code Playgroud)
和序列化代码是
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
}
Run Code Online (Sandbox Code Playgroud)
生成的JSON序列化是
{
"emailAddress":"user1@test.com",
"userStatus":{"enum":"Active"}
}
Run Code Online (Sandbox Code Playgroud)
有可能得到以下形式吗?
{
"emailAddress":"user1@test.com",
"userStatus":"Active"
}
Run Code Online (Sandbox Code Playgroud)
你有没有尝试过:
case class UserInfo(
emailAddress: String,
@JsonScalaEnumeration(classOf[UserStatusType]) userStatus: UserStatus.UserStatus
)
Run Code Online (Sandbox Code Playgroud)
杰克逊维基的例子有点误导.你不需要这holder
门课.它只是具有该元素的事物的一个例子.你需要的是注释
归档时间: |
|
查看次数: |
2872 次 |
最近记录: |