Giả sử tôi có một điều tra hoặc nhóm kín của trường hợp các đối tượng như sau:Serialize và Deserialize enumerations scala hoặc trường hợp các đối tượng sử dụng json4s
sealed abstract class Status
case object Complete extends Status
case object Failed extends Status
case object Pending extends Status
case object Unknown extends Status
hoặc
object Status extends Enumeration {
val Complete, Failed, Pending, Unknown = Value
}
cách dễ nhất để tạo json là gì các định dạng cho chúng để tôi có thể dễ dàng (lập trình) tạo các định dạng json để sử dụng theo phương thức nhà máy tùy chỉnh JsonFormat
, như sau, hoạt động cho tất cả các kiểu chữ thường, chuỗi, bộ sưu tập, v.v., nhưng sản xuất {}
hoặc {"name": null}
cho hai loại trên của enumerations ?:
import org.json4s.DefaultFormats
import org.json4s.jackson.JsonMethods.parse
import org.json4s.jackson.Serialization
import org.json4s.jvalue2extractable
import org.json4s.string2JsonInput
trait JsonFormat[T] {
def read(json: String): T
def write(t: T): String
}
object JsonFormat {
implicit lazy val formats = DefaultFormats
def create[T <: AnyRef: Manifest](): JsonFormat[T] = new JsonFormat[T] {
def read(json: String): T = parse(json).extract[T]
def write(t: T): String = Serialization.write(t)
}
}