我有一个如下所示的 json 数组,它是从数据库列提取到 scala 中的
jsonArrayString = "[{"firstName": "Harry", "lastName": "Smith"}, {"firstName": "John", "lastName": "Ken"}]"
我想迭代这个数组并在 for 循环中获取字典键的值。
非常感谢您的帮助!
最佳答案
Scala 没有任何内置的 JSON 处理,因此您需要使用第三方库。 This answer列出了特定于 Scala 的库,任何 Java 库也都可以使用。
尽管它不是特定于 Scala 的,但我通常使用 Jackson ,当我在 Scala 中使用 JSON 时,因为它通常已经在我工作的应用程序的类路径中,而且可以肯定的是,它在未来会得到很好的支持,因为它的使用如此广泛。它有一个 optional Scala module使它能够与 Scala 的内置类型很好地配合。
这是解析 jsonArrayString
的一种方法如果 Jackson 及其 Scala 模块位于您的类路径中:
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala._
case class Person(firstName : String, lastName : String)
val jackson = new ObjectMapper with ScalaObjectMapper
jackson.registerModule(DefaultScalaModule)
val jsonArrayString =
"""[{"firstName": "Harry", "lastName": "Smith"},
|{"firstName": "John", "lastName": "Ken"}]""".stripMargin
jackson.readValue[List[Person]](jsonArrayString).foreach { person =>
println(s"First Name: ${person.firstName}; Last Name: ${person.lastName}")
}
如果 firstName
或lastName
可以为 null 或不存在,您可以使用类型 Option[String]
声明它们Scala 模块将映射 null
至None
.
关于arrays - 如何在scala中迭代json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64036126/