0

我是在 R 中操作 json 数组的新手。当我使用以下代码将使用 R 包 jsonlite 的 json 数组写入 .json 文件时,我将整个 json 数组打印在该文件的第一行(reg 是一个数据。框架)。

rownames(reg) <- NULL
write(toJSON(reg), file = "test.json")

我希望能够在嵌套层次结构中的每个主要(“父”)元素的末尾添加一个回车符“\n”,因此它看起来如下所示:

[{"val":"ID1","prop":{"Sub":{"val":"foo"}},
{"val":"ID2","prop":{"Sub":{"val":"bar"}}]

代替:

[{"val":"ID1","prop":{"Sub":{"val":"foo"}},{"val":"ID2","prop":{"Sub":{"val":"bar"}}]

谁能帮我?

注意:我不想要“漂亮”的布局。我想要每个父元素/所有子属性一行。

这是一个示例 data.frame

reg <- data.frame(value=c("ID1", "ID2", "ID3"), properties.Subject.value=c("http://example.org/ID1", "http://example.org/ID2", "http://example.org/ID3"), properties.Subject.properties.value=c("http://example.org/xID1", "http://example.org/xID2", "http://example.org/xID3"))
value    properties.Subject.value  properties.Subject.properties.value
ID1      http://example.org/ID1    http://example.org/xID1
ID2      http://example.org/ID2    http://example.org/xID2
ID3      http://example.org/ID3    http://example.org/xID3
4

1 回答 1

0

根据您对新线路的要求,我认为stream_out应该可以。

require(jsonlite)
output <- file("test.json")
stream_out(head(mtcars), con = output, verbose = TRUE)

输出

{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.62,"qsec":16.46,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4"}
{"mpg":21,"cyl":6,"disp":160,"hp":110,"drat":3.9,"wt":2.875,"qsec":17.02,"vs":0,"am":1,"gear":4,"carb":4,"_row":"Mazda RX4 Wag"}
{"mpg":22.8,"cyl":4,"disp":108,"hp":93,"drat":3.85,"wt":2.32,"qsec":18.61,"vs":1,"am":1,"gear":4,"carb":1,"_row":"Datsun 710"}
{"mpg":21.4,"cyl":6,"disp":258,"hp":110,"drat":3.08,"wt":3.215,"qsec":19.44,"vs":1,"am":0,"gear":3,"carb":1,"_row":"Hornet 4 Drive"}
{"mpg":18.7,"cyl":8,"disp":360,"hp":175,"drat":3.15,"wt":3.44,"qsec":17.02,"vs":0,"am":0,"gear":3,"carb":2,"_row":"Hornet Sportabout"}
{"mpg":18.1,"cyl":6,"disp":225,"hp":105,"drat":2.76,"wt":3.46,"qsec":20.22,"vs":1,"am":0,"gear":3,"carb":1,"_row":"Valiant"}

?stream_out

因为解析巨大的 JSON 字符串既困难又低效,JSON 流是使用缩小的 JSON 记录行完成的,即 ndjson。这是非常标准的:dat 或 MongoDB 等 JSON 数据库使用相同的格式来导入/导出数据集。请注意,这意味着合并的总流本身不是有效的 JSON;只有个别行是。另请注意,由于换行符用作分隔符,因此不允许使用美化 JSON:必须缩小 JSON 行。在这方面,格式与 fromJSON 和 toJSON 有点不同,其中所有行都是带有可选换行符的单个 JSON 结构的一部分。

于 2016-08-02T18:42:02.650 回答