仅使用R中的JSON从JSON中提取特定级别的密钥元素



我正在用大量的JSON文件在R中工作。这些JSON文件的列表嵌套在列表中的列表中(等等)。因此有多个元素。

我的问题是,如何仅提取一个在一个特定级别上存储的密钥元素,而不会与所有嵌套列表相关的值?

我正在处理的文件越来越多地像这样:

{
    "Key 1 at level 1": "value x",
    "Key 2 at level 1": "value x",
    "Key 3 at level 1": {
        "Key 1 at level 2": {
            "Key 1 at level 3": "value x",
            "Key 2 at level 3": "value x",
            "Key 3 at level 3": "value x"
        },
        "Key 2 at level 2": {
            "Key 4 at level 3": "value x",
            "Key 5 at level 3": "value x",
            "Key 6 at level 3": "value x"
        }
    }
}

因此,在此示例中,我想要的是检索一个将包含"在2级为2"的键1的列表,而" key 2 at Level 2"。

您可以在此链接中找到一个真实示例:http://bioinfo.hpc.cam.ac.uk/cellbase/webservices/rest/swagger.json(当心,因为我很大)

对不起,如果以前提出过这个问题。我已经花了很长时间寻找答案,但是我什么都没找到。

预先感谢。

在这种情况下,您需要每个顶级值中的密钥。我们可以通过将每个元素映射到其名称来做到这一点。

这将为我们提供一个包含NULL s和字符向量的列表。我们 unlist摆脱了 NULL s并将其变成一个字符向量。

library('purrr')
library('tidyverse')
library('rjson')
swagger <- fromJSON('
  {
      "Key 1 at level 1": "value x",
      "Key 2 at level 1": "value x",
      "Key 3 at level 1": {
          "Key 1 at level 2": {
              "Key 1 at level 3": "value x",
              "Key 2 at level 3": "value x",
              "Key 3 at level 3": "value x"
          },
          "Key 2 at level 2": {
              "Key 4 at level 3": "value x",
              "Key 5 at level 3": "value x",
              "Key 6 at level 3": "value x"
          }
      }
  }
')
map(swagger, names) %>% unlist

[1] "Key 1 at level 2" "Key 2 at level 2"

相关内容

  • 没有找到相关文章

最新更新