2

如果我正在使用 json4s(使用 Jackson 绑定):

scala> import org.json4s._
scala> import org.json4s.jackson.JsonMethods._
scala> parse(""" { "numbers" : [1, 2, 3, 4] } """)
res0: org.json4s.JsonAST.JValue =
      JObject(List((numbers,JArray(List(JInt(1), JInt(2), JInt(3), JInt(4))))))

如何将org.json4s.JsonAST.JValue上面的给定转换为 a com.fasterxml.jackson.databind.JsonNode

为什么我要这样做:我想JValue使用优秀的json-schema-validator Java 库来针对 JSON 模式验证 s,该库将JsonNodes 作为参数。

我正在寻找某种等同于Play Framework 处理JsValue<> JsonNodeinterop的方法。

4

1 回答 1

9

从 Json4s 3.2.11-SNAPSHOT 开始,有两种方法可以在 JValue 和 JsonNode 之间进行转换:

  • asJsonNode(jv: JValue): JsonNode将 JValue 转换为 JsonNode
  • fromJsonNode(jn: JsonNode): JValue将 JsonNode 转换为 JValue

这是一个如何使用它的示例:

import org.json4s._
import org.json4s.jackson.JsonMethods._

val jv = parse(""" { "numbers" : [1, 2, 3, 4] } """)

val jn = asJsonNode(jv)
println(jn)
// {"numbers":[1,2,3,4]}

val jv2 = fromJsonNode(jn)
println(jv2)
// JObject(List((numbers,JArray(List(JInt(1), JInt(2), JInt(3), JInt(4))))))
于 2014-05-30T01:23:05.210 回答