2013-11-27 52 views
2

我想从数组中构建json字符串。我能够获得使用JsonAST JSON字符串格式如下:序列化数组和映射到斯卡拉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阵列的阵列=(1,2,3)

什么是获得JSON响应,它支持所有的数据结构的常见方式?

回答

4

我用json4s(这恰好使用引擎盖下升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]} 
2

您只需将数组转换成列表,看起来好像liftweb AST没有定义为原料数组类型的隐式转换...所以像这样:

scala> val array = Array(1,2,3,4,5) 
scala> val c = compact(JsonAST.render(array.toList)) 

(请注意,除“toList”)工作正常。

希望这会有所帮助。

+0

谢谢you..it workes – Rajeev

+0

有反正它会自动检测并序列化它。如果我将任何具有map或array的对象结构作为成员变量,这将会很有帮助。我不应该担心内部结构是什么。最后,我应该能够获取json字符串......你能否以这个角度给出任何建议 – Rajeev