我正在尝试从数组构造json字符串。我可以使用JsonAST获取json字符串格式,如下所示:
import net.liftweb.json.JsonAST
import net.liftweb.json.JsonDSL._
import net.liftweb.json.Printer._
val map = Map("a" -> "b", "c" -> "d")
val c = compact(JsonAST.render(map))
println(c) //op : {"a":"b","c":"d"}
当我尝试对数组做同样的事情时,它会抛出以下错误:必需:net.liftweb.json.JsonAST.JValue
我正在寻找序列化数组,如val a = Array(1,2,3)
获取支持所有数据结构的json响应的常用方法是什么?
答案 0 :(得分:4)
我使用json4s(碰巧在引擎盖下使用lift-json):
import org.json4s.native.Serialization.write
import org.json4s.DefaultFormats
val a = Array(1,2,3,4,5)
implicit val formats = DefaultFormats
println(write(a)) // [1,2,3,4,5]
它还可以序列化更复杂的值:
case class Test(map: Map[String, Int], arr: Array[Int])
val t = Test(Map("one" -> 1, "two" -> 2), Array(1, 2, 3, 4, 5))
println(write(t)) // {"map":{"one":1,"two":2},"arr":[1,2,3,4,5]}
答案 1 :(得分:2)
你只需要将数组转换为List,看起来好像liftweb AST没有为原始数组类型定义隐式转换......所以像这样:
scala> val array = Array(1,2,3,4,5)
scala> val c = compact(JsonAST.render(array.toList))
(注意添加“toList”)工作正常。
希望这有帮助。