2016-08-02 46 views
0

我是新來操縱R中的json數組當我寫一個json數組使用R包jsonlite到一個.json文件使用下面的代碼,我得到整個json數組打印在該文件的第一行(reg是一個data.frame)。r - jsonlite添加回車結束json數組「父元素」

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 
+0

在'?write'裏面說有一個sep參數。您可以嘗試添加'sep =「\ n」',但我不確定它會起作用。 – lmo

+0

我忽略了你的要求,你不想要漂亮的佈局。因此刪除了答案。你可以添加一個示例數據框嗎? – user5249203

+0

添加數據幀示例! – areyoujokingme

回答

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線來完成。這非常標準:JSON數據庫(如dat或MongoDB)使用相同的格式導入/導出數據集。請注意,這意味着合併的總流量無效JSON本身;只有各條線。另請注意,由於換行符用作分隔符,因此不允許使用美化的JSON:JSON行必須縮小。在這方面,格式與JSON和JSON有所不同,其中所有行都是帶有可選換行符的單個JSON結構的一部分。