【发布时间】:2019-12-19 03:37:06
【问题描述】:
我从 API 传回了以下数据,但我无法更改其结构。我想将下面的 JSON 转换成 tibble。
data <- '{ "ids":{
"00000012664":{
"state":"Indiana",
"version":"10",
"external_ids":[
{
"db":"POL",
"db_id":"18935"
},
{
"db":"CIT",
"db_id":"1100882"
}
],
"id":"00000012520",
"name":"Joe Smith",
"aliases":[
"John Smith",
"Bill Smith"
]
},
"00000103162":{
"state":"Kentucky",
"external_ids":[
{
"db":"POL",
"db_id":"69131"
},
{
"db":"CIT",
"db_id":"1098802"
}
],
"id":"00000003119",
"name":"Sue Smith",
"WIP":98203059
} ,
"0000019223":{
"state":"Ohio",
"external_ids":[
{
"db":"POL",
"db_id":"69134"
},
{
"db":"JT",
"db_id":"615234"
}
],
"id":"0000019223",
"name":"Larry Smith",
"WIP":76532172,
"aliases":[
"Test 1",
"Test 2",
"Test 3",
"Test 4"
],
"insured":1
} } }'
请注意:这是数据的一小部分,可能有数千个“ID”。
我已尝试将jsonlite 和tidyjson 与purrr 结合使用。
下面给了我一个 tibble,但我不知道如何取回别名。
obj <- jsonlite::fromJSON(data, simplifyDataFrame = T, flatten = F)
obj$ids %>% {
data_frame(id=purrr::map_chr(., 'id'),
state=purrr::map_chr(., 'state', ''),
WIP=purrr::map_chr(., 'WIP', .default=''),
#aliases=purrr::map(purrr::map_chr(., 'aliases', .default=''), my_fun)
)
}
tidyjson 我也搞不清楚:
data %>% enter_object(ids) %>% gather_object %>% spread_all
我想要返回的是带有以下字段的小标题(无论它们是否在 JSON 中。
id
name
state
version
aliases -> as a string comma separated
WIP
奖金:;-)
我也可以将 external_ids 作为字符串获取吗?
【问题讨论】:
-
另外,不清楚
external_ids需要的格式。这是一个data.frame,有 2 列 -
任何类型的逗号分隔字符串
-
我用`external_ids'更新了答案
-
请看最新的例子。这是一小组数据,但可能有数千个条目。我应该说清楚的。对不起。