5

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

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

所以它看起来像这样:

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

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

4

2 回答 2

12

要直接回答您的问题,这是一种非常简单和hacky的方法:

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

但是,您几乎可以肯定想做的是从众多 JSON 库中选择一个:play-json和lift- json都得到了一些好评。在最坏的情况下,您可以只为 Java 获取一个简单的 JSON 库并使用它。

于 2013-03-19T11:10:37.857 回答
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 隐式转换,因为我指定我希望它产生 a JObject,所以现在json是您想要的 json 数据的内存模型。

pretty来自Printer对象,render来自JsonAST对象。结合起来,它们创建了String您的数据的表示形式,看起来像

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

请务必查看lift 文档,您可能会在其中找到有关 lift 的 json 支持的任何其他问题的答案。

于 2013-03-19T11:45:17.293 回答