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)
}
这是我的案例 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)
}