1

我使用以下 rjson 代码创建一个 JSON 文件,其中 df 代表我的输入数据帧。

result <- toJSON(list(items=lapply(1:nrow(df),function(i)df[i,])))

该文件显示为:

{"items":[{"name":"Item 1","group":1},{"name":"Item 2","group":1},{"name":"Item 3","group":2}]}

但是,我想让输出更易于阅读,如下所示:

{
 "items":[
   {"name":"Item 1","group":1},
   {"name":"Item 2","group":1},
   {"name":"Item 3","group":2}
 ]
}

RJSONIO 具有“漂亮”选项,但不会创建我的应用程序所需的 JSON 格式。除了对文件本身进行后处理之外,有没有办法使用 rjson 创建我正在寻找的输出文件?

谢谢,

蒂姆

4

1 回答 1

3

不确定您是否已准备好RJSONIO(我有时会感到有些困惑)。但是既然你提到rjson了,那么也许你也愿意使用另一个 json 包。这是使用该jsonlite软件包的一种可能性。

# unloadNamespace(RJSONIO) ## to avoid confusion between packages
library(jsonlite)

x <- '{"items":[{"name":"Item 1","group":1},{"name":"Item 2","group":1},{"name":"Item 3","group":2}]}'

## to go back and create your example list of 1 data frame
( dfl <- fromJSON(x) )
# $items
#     name group
# 1 Item 1     1
# 2 Item 2     1
# 3 Item 3     2

## prettify your json output
toJSON(dfl, pretty = TRUE)

它返回以下漂亮的json,可以保存到文件中writeLines()

{
    "items": [
        {
            "name": "Item 1",
            "group": 1
        },
        {
            "name": "Item 2",
            "group": 1
        },
        {
            "name": "Item 3",
            "group": 2
        }
    ]
}
于 2014-12-22T19:19:44.573 回答