2013-11-27 55 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