使用键提取 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)
我有一个名为 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)