使用键提取 json 个值

Extracting json values using a key

我有一个名为 test 的 JSON 字符串,其中一些元素包含多个键(例如,foo 和 bar)。

我的目标是只提取 foo 的值。如何用 R 做到这一点?

我试过同时转换为矩阵和 data.frame,但这无助于解决问题。

> test
[1] "{\"foo\":[1,2,3],\"bar\":[0]}" "{\"foo\":[1]}"                 "{\"foo\":[4], \"bar\":[1]}"   
[4] "{\"foo\":[2]}"                 "{\"foo\":[1,2]}"               "{\"foo\":[3]}" 

如有任何帮助,我们将不胜感激

dput(test)
c("{\"foo\":[1,2,3],\"bar\":[0]}", "{\"foo\":[1]}", "{\"foo\":[4], \"bar\":[1]}", 
"{\"foo\":[2]}", "{\"foo\":[1,2]}", "{\"foo\":[3]}")

我们可以使用 fromJSON 转换为 data.frame,然后提取 foo 列,即 list

library(jsonlite)
lapply(paste0("[", test, "]"), function(x) unlist(fromJSON(x)$foo))

paste将元素合并为一个字符串,然后执行fromJSON

fromJSON(paste0("[", paste(test, collapse=","), "]"))$foo
#[[1]]
#[1] 1 2 3

#[[2]]
#[1] 1

#[[3]]
#[1] 4

#[[4]]
#[1] 2

#[[5]]
#[1] 1 2

#[[6]]
#[1] 3

或使用tidyverse

library(tidyverse)
str_c(test, collapse=",") %>%
    str_c("[", ., "]") %>%
    fromJSON %>%
    pull(foo)