【问题标题】:How to get value from child jsonnode using java如何使用java从子jsonnode获取值
【发布时间】:2019-01-26 05:59:47
【问题描述】:

我需要使用 java 从 jsonnode 获取编解码器值。下面是带有父子节点的jsonnode。

{  
   "DetectedProperties":{  
      "Bitrate":262610704,
      "FrameRate":"24/1",
      "FileSize":32827252,
      "Height":1080,
      "Width":1920,
      "DurationMillis":1.0,
      "codec":"prores"
   }
}

以下代码片段不返回编解码器的值。它总是返回 null。

JsonNode videoProperties = getCodecInfo(videoFile);
JsonNode videoInfo = videoProperties.get("DetectedProperties");
log.debug("codec: " + videoInfo.get("codec").toString()); // returns null

如何使用java从上面的json中获取codec值?

请提供您的意见。

【问题讨论】:

  • 尝试为您的 json 数组创建一个模型类并使用该模型类获取元素的值
  • 试试videoInfo.get("codec").asText()
  • @RajenRaiyarela 在尝试您的代码时遇到 java.lang.NullPointerException
  • 您使用的是哪个 Jackson 版本?
  • 您的代码有效。结果我得到了“prores”。您能否检查一下 getCodecInfo() 中的代码是否正确返回了 json 树?

标签: java jsonnode


【解决方案1】:

您可以为此使用 json 表达式“/DetectedProperties/codec”。

  JsonParser parser = new JsonFactory().createParser(getCodecInfo().toString());
  parser.setCodec(new ObjectMapper());
  TreeNode tree = parser.readValueAsTree();
  System.out.println(tree.at("/DetectedProperties/codec"));

【讨论】:

  • 它没有返回任何东西.. :(
  • at() 方法返回 JsonNode。您可以使用 asText() 方法从该节点中提取字符串。
猜你喜欢
  • 2014-12-18
  • 1970-01-01
  • 2022-08-07
  • 2022-12-24
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 2021-02-05
  • 1970-01-01
相关资源
最近更新 更多