2013-03-19 115 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表示。