保留 json 对象中的重复名称,来自 json 列表的精简转换
Keep duplicated names in json object from jsonlite conversion of list
如何使用 jsonlite 保留重复名称将列表转换为 json 对象?
z<-as.list(letters[1:3])
names(z)<-c("tmp","tmp","tmp")
toJSON(z,auto_unbox=TRUE)
结果
{"tmp":"a","tmp.1":"b","tmp.2":"c"}
但我需要
{"tmp": ["a", "b", "c"]}
更新:一个更简单的解决方案是将所有内容捆绑到一个列表中
my_list<-list()
my_list$id<-"id"
my_list$tmp<-c("a","b","c")
toJSON(my_list,auto_unbox=T) # properly formatted JSON
更新:这个问题很好地处理了单独拆箱每个 JSON 对象的情况
您必须自己进行对象操作以重塑对象以获得正确的 JSON 输出。要获得所需的输出,您需要一个命名的数组列表。以下是将数据转换为此类对象的方法
jsonlite:::toJSON(with(stack(z), tapply(values, ind, c, simplify=FALSE)))
# {"tmp":["a","b","c"]}
基本上stack()
将数据折叠成一个data.frame,然后我们将数据分组到列表中。
如何使用 jsonlite 保留重复名称将列表转换为 json 对象?
z<-as.list(letters[1:3])
names(z)<-c("tmp","tmp","tmp")
toJSON(z,auto_unbox=TRUE)
结果
{"tmp":"a","tmp.1":"b","tmp.2":"c"}
但我需要
{"tmp": ["a", "b", "c"]}
更新:一个更简单的解决方案是将所有内容捆绑到一个列表中
my_list<-list()
my_list$id<-"id"
my_list$tmp<-c("a","b","c")
toJSON(my_list,auto_unbox=T) # properly formatted JSON
更新:这个问题很好地处理了单独拆箱每个 JSON 对象的情况
您必须自己进行对象操作以重塑对象以获得正确的 JSON 输出。要获得所需的输出,您需要一个命名的数组列表。以下是将数据转换为此类对象的方法
jsonlite:::toJSON(with(stack(z), tapply(values, ind, c, simplify=FALSE)))
# {"tmp":["a","b","c"]}
基本上stack()
将数据折叠成一个data.frame,然后我们将数据分组到列表中。