2013-03-19 112 views
4

我想將斯卡拉字符串列表List [String]轉換爲Json對象。將斯卡拉列表轉換爲Json對象

對於我列表中的每個字符串,我想將它添加到我的Json對象中。

因此,它看起來就像是這樣的:

{ 
"names":[ 
    { 
    "Bob", 
    "Andrea", 
    "Mike", 
    "Lisa" 
    } 
] 
} 

如何創建一個JSON對象看起來像這樣,從我的字符串列表?

回答

10

直接回答你的問題,一個非常簡單的和哈克的方式做到這一點:

val start = """"{"names":[{""" 
val end = """}]}""" 
val json = mylist.mkString(start, ",", end) 

不過,你幾乎可以肯定要做的就是挑選許多JSON庫在那裏的一個:play-json得到一些好評如同lift-json。最糟糕的是,你可以爲Java獲取一個簡單的JSON庫並使用它。

3

因爲我熟悉lift-json,所以我會告訴你如何使用該庫。

import net.liftweb.json.JsonDSL._ 
import net.liftweb.json.JsonAST._ 
import net.liftweb.json.Printer._ 
import net.liftweb.json.JObject 

val json: JObject = "names" -> List("Bob", "Andrea", "Mike", "Lisa") 

println(json) 
println(pretty(render(json))) 

names -> List(...)表達是隱含在JsonDSL轉換,因爲我指定我想它導致JObject,所以現在json是你想要的JSON數據的內存模型。

pretty來自Printer對象,而render來自JsonAST對象。相結合,他們創建自己的數據,它看起來像

{ 
    "names":["Bob","Andrea","Mike","Lisa"] 
} 

一定要檢查出lift documentation,你可能會發現回答了有關電梯的JSON支持任何問題的String表示。