r语言 - 如何"name"每个 JSON 对象



我相信这是一件相当简单的事情,但我无法弄清楚。

我在 R 中有一个数据帧,如下所示:

a   b   c
1   9   J
2   5   K

当我使用 toJSON 并将数据帧作为命名列表传递时

val <- toJSON(list( table = df), pretty = TRUE)

我得到:

{  "table":[
{
{
"a":"1",
"b":"9",
"c":"J"
}
},
{
{
"a":"2",
"b":"5",
"c":"K"
}
}
]
}

如何让每个 JSON 对象命名为"条目",如下所示:

{  "table":[
{
"entry":{
"a":"1",
"b":"9",
"c":"J"
}
},
{
"entry":{
"a":"2",
"b":"5",
"c":"K"
}
}
]
}

获取所需的结构有点复杂,因为{"entry":{"a":1,"b":9,"c":"J"}}对象

要获得此结构,您需要有一个命名列表

lst <- list( list(a = 1, b = 9, c = "J") )
attr( lst, "names" ) <- "entry"
toJSON( lst, auto_unbox = TRUE )
# {"entry":{"a":1,"b":9,"c":"J"}}

因此,data.frame 的每一行都需要是一个命名列表

res <- lapply( seq_len( nrow( df ) ), function(i) {
lst <- list( as.list( df[i, , drop = F] ) )
attr( lst, "names" ) <- "entry"
lst
})
## add the 'table'
res <- list( table = res )
toJSON( res, auto_unbox = TRUE, pretty = TRUE )
# {
#   "table": [
#     {
#       "entry": {
#         "a": 1,
#         "b": 9,
#         "c": "J"
#       }
#     },
#     {
#       "entry": {
#         "a": 2,
#         "b": 5,
#         "c": "K"
#       }
#     }
#   ]
# } 

相关内容

  • 没有找到相关文章

最新更新