微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Scala中遍历json数组

如何解决如何在Scala中遍历json数组

我有一个如下所示的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的内置类型。

如果杰克逊及其Scala模块位于您的类路径中,则这是解析jsonArrayString的一种方法:

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模块会将null映射到None

,

这个问题非常广泛。 Scala中有许多JSON解析库,这使这项工作变得微不足道。 它们都会将JSON数组反序列化为要解码的任何类型的scala列表。 由于您要处理产品,因此可以选择使用任何产品类型,例如内置元组或自定义类。 我个人比较喜欢Circe https://github.com/circe/circe

,
libraryDependencies += "org.json" % "json" % "20200518"

这对Json迭代很有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。