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

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转换为com.fasterxml.jackson.databind.JsonNode

为何要执行此操作:我想使用出色的json-schema-validator Java库针对JSON Schema验证JValue,它将JsonNode用作参数。

我正在寻找某种与Play Framework's handling of JsValue <> JsonNode interop等效的东西。

最佳答案

从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))))))
    

    关于scala - 如何将json4s JValue转换为Jackson JsonNode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23878495/

    10-09 16:55