2015-07-23 17 views
8

Tiếp theo bài viết này https://github.com/FasterXML/jackson-module-scala/wiki/EnumerationsJSON serialization enums Scala sử dụng Jackson

Việc kê khai liệt kê là như

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) 

Các DTO được khai báo là

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

} 

và mã serialization là

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 
} 

Các kết quả JSON serialization là

{ 
    "emailAddress":"[email protected]", 
    "userStatus":{"enum":"Active"} 
} 

Có thể để có được nó trở thành mẫu dưới đây?

{ 
    "emailAddress":"[email protected]", 
    "userStatus":"Active" 
} 

Trả lời

4

Các bạn đã thử: ví dụ

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

Các jackson wiki là một chút sai lệch. Bạn không cần lớp học holder. Nó chỉ là một ví dụ về một thứ có yếu tố đó. Điều bạn cần là chú thích

+0

Hoạt động tuyệt vời. Cảm ơn :-) – sriram

Các vấn đề liên quan