【问题标题】:jackson read node field with $ symbol杰克逊用 $ 符号读取节点字段
【发布时间】:2021-04-01 21:02:06
【问题描述】:

来自 API 的响应看起来像

  "node1": [
       {
           "$field": "https://somethingh.com",
           "type": "object",
           "meta:Type": "object"
       },
       {
           "$field": "https://somethingelse.com",
           "type": "object",
           "meta:Type": "object"
       }
   ],

当通过 key 检索节点时,有时它正在检索,有时 objNode.get("$field") 返回 null。所以得到空指针异常。

我有什么方法可以避免它。我不想使用 get(0) (元素的索引)。因为后者你的位置可能会改变..

    val mapper = new ObjectMapper()
    val node = mapper.readTree(res)
    val nodelist = node.get("node1")

    if (nodelist != null) {
     
      for (objNode <- nodelist) {
        println(s"objNode => $objNode  and  value => ${objNode.get("$field")} ")
        val fieldColumn = objNode.get("$field").textValue()
}

【问题讨论】:

  • 这可能是因为您在JSON 有效负载和Scala 代码中使用了两个不同的美元符号。查看dollar signs 的列表。尝试从有效负载中复制美元符号并放入代码文件。

标签: scala jackson jackson-databind


【解决方案1】:

问题在于 $ 是一个特殊字符。代码按原样运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多