R 如何";名称“;每个JSON对象

R 如何";名称“;每个JSON对象,r,json,object,jsonlite,R,Json,Object,Jsonlite,我相信这是一件相当简单的事情,但我无法理解 我在R中有一个数据帧,如下所示: a b c 1 9 J 2 5 K 当我使用toJSON并将数据帧作为命名列表传递时 val <- toJSON(list( table = df), pretty = TRUE) lst <- list( list(a = 1, b = 9, c = "J") ) attr( lst, "names" ) <- "entry" toJSON( lst, auto_unb

我相信这是一件相当简单的事情,但我无法理解

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

a   b   c
1   9   J
2   5   K
当我使用toJSON并将数据帧作为命名列表传递时

val <- toJSON(list( table = df), pretty = TRUE)
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"}}
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"
#       }
#     }
#   ]
# } 

如何将每个JSON对象命名为“entry”,如下所示:

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

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

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

val <- toJSON(list( table = df), pretty = TRUE)
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"}}
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"
#       }
#     }
#   ]
# } 


lst Try
toJSON(list(table=list(entry=df)),pretty=TRUE)
谢谢,但这只会向第一个对象添加条目。“”{“table”:[{“entry”:{“a”:“1”、“b”:“9”、“c”:“J”、}}、{{“a”:“2”、“b”:“5”、“c”:“K”、}}}]}@akrun接近但不完全正确;data.frame的每一行都需要转换为命名列表