我正在尝试像这样创建一个 Json 对象
{
"Field1": [{}, {}, {}, {}],
"Field2": [{}, {}, {}],
"Field3": {}
}
通常在 Java 中我可以通过(特别是使用 google simple json)实现这一点
- 为 field1 和 field2 创建 JSON 数组,
- 为 Field3 创建一个 JSON 对象
- 将以上3个组合成另一个JSONObject
上面的结果来自不同的进程,我需要返回一个组合的json对象
我很困惑如何在 Scala 中实现相同的目标,我尝试了多种库和方法。我正在尝试的最新版本是 json4s。我以为我可以
- 遍历字符串列表并将它们放入“json 数组”
- 将上述数组添加到另一个带有键的“json对象”
- 返回合并后的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/