将Scala列表转换为JSON对象

6
我想把一个Scala字符串列表(List[String])转换成Json对象。
对于列表中的每个字符串,我都想将它添加到我的Json对象中。
这样它看起来会类似于下面的内容:
{
 "names":[
  {
    "Bob",
    "Andrea",
    "Mike",
    "Lisa"
  }
 ]
}

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

12

直接回答你的问题,一个非常简单和不够优雅的方法是:

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

然而,您几乎可以肯定想要做的是选择众多的 JSON 库之一:play-json 得到了一些好评,lift-json 也有不少赞誉。最坏的情况下,您可以只获取一个简单的 Java JSON 库并使用它。


val start = """"{"names":[{"""" val end = """"}]}""" val json = mylist.mkString(start, """","""", end) 将开始变量赋值为 """"{"names":[{"""" 将结束变量赋值为 """"}]}""" 使用mylist.mkString方法,将json变量赋值为在开始变量、结束变量之间以逗号分隔的mylist列表元素的字符串拼接结果。 - Srinivasu

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文档,在那里您很可能会找到有关lift json支持的任何进一步问题的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接