2016-08-02 6 views
0

Rで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"}}] 

誰も私を助けることができますか?

注:私は「かわいい」レイアウトを望んでいません。私は親要素/すべての子プロパティごとに1つの行が必要です。

は、ここで私はstream_outが動作するはずだと思うの例新しい行の要件を1として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

です。

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の列を縮小する必要があります。この点で、形式はfromSSONとtoSSONとは少し異なります。この場合、すべての行はオプションの改行を含む単一のJSON構造の一部です。

関連する問題