Scala:将具有UUID字段的对象转换为Json将返回空白

时间:2016-12-22 06:41:35

标签: json scala uuid

这是我要转换为Json的案例类

case class Cart(cart_id :UUID, cart_entries :Map[String,CartEntry]){
}

我正在使用net.liftweb.json ._

implicit val formats = UUID
val json = write(cart) //cart is Cart object with values for both attributes cart_id = 68eb787f-746c-4320-9ef4-8b5c7f0d7e21
println(json)

json返回的内容如下:

{"cart_id":{},"cart_entries":[{"_1":"ABC","_2":{"sku_id":"ABC","quantity":12,"price":{"bigDecimal":{},"mc":{}}}}]}

请注意,cart_id的值为空{},我希望如下:

{"cart_id":{68eb787f-746c-4320-9ef4-8b5c7f0d7e21},"cart_entries":[{"_1":"ABC","_2":{"sku_id":"ABC","quantity":12,"price":{"bigDecimal":{},"mc":{}}}}]}

对于UUID,我使用了其他api,例如fastxml all return“”。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

虽然您的Cart是由lift-json提供序列化程序的类型组成的案例类,但UUID类可能不是(我假设您使用java.util.UUID)。因此,你需要write your own serializer & deserializer,这样的事情(未经测试):

     def serialize(implicit format: Formats): PartialFunction[Any, JValue] = {
       case x: UUID => JString(x.toString)
     }