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

Scala : Converting object having UUID field to Json returns blank

这是我的案例 class,我想将其转换为 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 return 类似 :

{"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":{}}}}]}

我使用了其他 api 之类的 fasterxml all return "" 作为 UUID。 我该如何解决这个问题?

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

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