将scala列表转换为Json对象

时间:2013-03-19 10:59:40

标签: json list scala

我想将scala的字符串列表List [String]转换为Json对象。

对于列表中的每个字符串,我想将它添加到我的Json对象中。

所以它看起来像这样:

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

如何从我的字符串列表中创建一个这样的json对象?

2 个答案:

答案 0 :(得分:10)

直接回答你的问题,这是一种非常简单和愚蠢的方式:

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

然而,你几乎肯定想要做的就是选择其中一个JSON库:play-json得到一些好的评论,lift-json也是如此。最糟糕的是,您可以为Java抓取一个简单的JSON库并使用它。

答案 1 :(得分:4)

由于我熟悉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对象。结合起来,他们会创建数据的String表示,看起来像

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

请务必查看lift documentation,在那里您可能会找到有关电梯json支持的任何其他问题的答案。