【问题标题】:Write unwrapped array of json - Jackson编写未包装的 json 数组 - Jackson
【发布时间】:2021-08-09 16:35:59
【问题描述】:

我们如何在 Jackson 中编写未包装的 JsonNode 数组?下面是一个示例代码:

val message = """{"Type": "Type1","MessageId": "MessageId1"}"""
val msgNode = objectMapper.readTree(message)
val msgNodes = List(msgNode, msgNode).asJavaCollection
val arrayNode = objectMapper.createArrayNode()
arrayNode.addAll(msgNodes)
objectMapper.writeValueAsString(arrayNode)

上面的代码将打印由方括号包裹的字符串数组,例如:

[{"Type":"Type1","MessageId":"MessageId1"},{"Type":"Type1","MessageId":"MessageId1"}]

我正在寻找的是上面的解包版本,基本上是这样的:

{"Type":"Type1","MessageId":"MessageId1"},{"Type":"Type1","MessageId":"MessageId1"}

有人可以帮忙吗?如果消息是 POJO 类,并且我们希望对 POJO 数组进行解包输出,我们如何扩展它?

【问题讨论】:

  • 有很多 Scala 库提供了与 JSON 的良好集成 ...

标签: scala jackson


【解决方案1】:

您可以输出数组的每一项并用逗号连接:

msgNodes
  .map(msg => objectMapper.writeValueAsString(msg))
  .mkString(",")

要为任何类中的任何数组自动执行此操作,您可能需要寻找其他库,这些库提供了在特定范围内以自定义方式描述数组序列化程序的可能性(如 Play-Json 中的Writes)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多