java - 在 Scala 中创建一个 Json 数组

标签 java json scala

我正在尝试像这样创建一个 Json 对象

{
  "Field1": [{}, {}, {}, {}],
  "Field2": [{}, {}, {}],
  "Field3": {}
}

通常在 Java 中我可以通过(特别是使用 google simple json)实现这一点

  1. 为 field1 和 field2 创建 JSON 数组,
  2. 为 Field3 创建一个 JSON 对象
  3. 将以上3个组合成另一个JSONObject

上面的结果来自不同的进程,我需要返回一个组合的json对象

我很困惑如何在 Scala 中实现相同的目标,我尝试了多种库和方法。我正在尝试的最新版本是 json4s。我以为我可以

  1. 遍历字符串列表并将它们放入“json 数组”
  2. 将上述数组添加到另一个带有键的“json对象”
  3. 返回合并后的json对象

我认为这会像在 Java 中一样简单,我是否遗漏了一些明显的东西? (我是 Scala 新手)。

如有任何帮助,我们将不胜感激。

最佳答案

我使用 scala module with jackson , JsonUtil.scala:

package json

import com.fasterxml.jackson.databind.{SerializationFeature, DeserializationFeature, ObjectMapper, PropertyNamingStrategy}
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper

object JsonUtil {
  private val ObjectMapper = buildMapper()

  private def buildMapper() = {
    val mapper = new ObjectMapper() with ScalaObjectMapper
    mapper.registerModule(DefaultScalaModule)
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
    mapper.enable(SerializationFeature.INDENT_OUTPUT)
    mapper
  }

  def fromJson[A](json: String, objectType: Class[A]): A = {
    ObjectMapper.readValue(json, objectType)
  }

  def toJson(data: AnyRef): String = {
    ObjectMapper.writeValueAsString(data)
  }
}

依赖关系:

compile 'com.fasterxml.jackson.core:jackson-core:2.6.3'
compile 'com.fasterxml.jackson.module:jackson-module-scala_2.11:2.6.3'

然后,它就很容易使用了:

case class MyDto(id: Int, name: Option[String])
...
val jsonString = JsonUtil.toJson(MyDto(123, Some("John Doe")))
val dto = JsonUtil.fromJson(jsonString, classOf[MyDto])

case class MyList(items: List[Int])
...
val jsonList = JsonUtil.toJson(MyList(List(1,2,3,4,5)))

关于java - 在 Scala 中创建一个 Json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35874021/

相关文章:

java - Hibernate 应用程序中 OneToMany 关联集合为 null

jquery - JSON 时间服务 "json-time.appspot.com"已损坏。有人有替代品吗?

java - 编辑 .json 文件 : adding lines in certain parts of the file?

scala - 如何将凭据传递给 sbt build cli?

scala - Slick 3.0.0 选择并创建或更新

Java Swing ActionMap 键

java - 如何允许外部访问phpMyAdmin的数据库?

java - 从流中的两个列表创建分离值的映射

javascript - 如果我想要的 URL 在 API 的 JSON 中,我该如何获取 API 的 URL?

scala - 如何将 Map[CustomType, String] 序列化为 JSON