Преобразовать объект json4s.Jvalue в игровую среду 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 & merge с использованием Json4s lib, как мы можем преобразовать Jvalue в Jsvalue?
1 ответ
Если мы приведем следующее неявное преобразование в области видимости
implicit def json4sToPlayJson(json4sVal: JValue): JsValue =
Json.parse(compact(render(json4sVal)))
тогда, например, если какой-то метод foo
ожидает Play's JsValue
def foo(json: JsValue) = { ... }
но это дано JValue
, компилятор автоматически вызовет json4sToPlayJson
Метод для преобразования значения:
val someJson4sValue = ...
foo(someJson4sValue) // becomes foo(json4sToPlayJson(someJson4sValue))
Ломать Json.parse(compact(render(json4sVal)))
состав у нас есть:
compact(render(json4sVal))
принимает json4sJValue
и возвращает исходную строкуJson.parse
берет эту строку и возвращает PlayJsValue