转换json4s.Jvalue对象以播放框架JsValue

时间:2018-03-28 19:06:33

标签: scala json4s play-json jsvalue

我们如何将Json4s.Jvalue对象转换为框架JsValue。

import org.json4s.native.JsonMethods._
    val jsonString = """
      {
        ...
        "firstName": "John",
        "lastName": "Smith",
        "address": {
          "streetAddress": "21 2nd Street",
          "city": "New York",
          "state": "NY",
          "postalCode": 10021
        },
        "phoneNumbers": [
          { "type": "home", "number": "212 555-1234" },
          { "type": "fax", "number": "646 555-4567" }
        ],
        ...
      }"""
  val json=parse(jsonString) //Jvalue
做了一些Diff&使用Json4s lib合并我们如何将Jvalue转换为播放Jsvalue?

1 个答案:

答案 0 :(得分:0)

如果我们在范围

中带来以下implicit conversion
implicit def json4sToPlayJson(json4sVal: JValue): JsValue = 
  Json.parse(compact(render(json4sVal)))

然后,例如,如果某个方法foo需要播放JsValue

def foo(json: JsValue) = { ... }

但是它被赋予JValue,编译器会自动调用json4sToPlayJson方法来转换值:

val someJson4sValue = ...
foo(someJson4sValue) // becomes foo(json4sToPlayJson(someJson4sValue))

打破我们的Json.parse(compact(render(json4sVal)))作文: