arrays - 如何在scala中迭代json数组

标签 arrays json scala scala-collections

我有一个如下所示的 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}")
}

如果 firstNamelastName可以为 null 或不存在,您可以使用类型 Option[String] 声明它们Scala 模块将映射 nullNone .

关于arrays - 如何在scala中迭代json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64036126/

相关文章:

javascript - 组合数组对象中的键值

数组中的 PHP if 语句

java - 逻辑问题和创建表格

php - 从 mysql 中的类别部分创建列表

Javascript如何用json数组解析JSON

mysql - Unicode解码错误: 'utf8' codec can't decode byte

java - 无法在 IntelliJ 15 中添加断点

scala - 为什么在 F[_] 参数预期有效的地方传递 Int?

json - Vue.js 中导入的 json 值不正确

java - System.nanoTime/System.currentTimeMillis = 107(这应该是 1e6 吗?)