R_批量json文件轉csv格式

json格式預覽:

{{data{

? ? ? ? ? rows{

? ? ? ? ????? ? ? ? ???????????????? ? ? }

? ? ? ? ? ? ? ? .......

? ? ? ? ? ? ? ???? {

? ? ? ? ? ? ? ? ? ? ??????????????????? }? }

? ? ? }}

? .......

{{data{

? ? ? ? ? rows{

? ? ? ? ? ? ? ? ? ?????????????????????????? ?}

? ? ? ? ? ? ? ? ......

?????????????????{

??????????????????????????????? ? ? ? ?????}? }

? ? ? }}

簡述:

其中一個data列表為一級數(shù)據(jù),一個rows列表為二級數(shù)據(jù),rows列表內(nèi)為三級數(shù)據(jù)

該json文件中包含多層一級數(shù)據(jù),各個一級數(shù)據(jù)中僅包含一層二級數(shù)據(jù),各個二級數(shù)據(jù)中包含多層二級數(shù)據(jù)


單個文件格式轉化

% 加載所需模塊

install.packages("rjson")

library("rjson")

library("plyr")

% file=json文件所在路徑

jdata<- fromJSON(file="C:\\Users\\ThinkPad\\Desktop\\1.json")

% 導出一層一級數(shù)據(jù)

jd<-jdata[[1]]$data$rows

jdfs<-lapply(jd,function(j){

? ? ? as.data.frame(j)

? ? ? })

jdf<-rbind.fill(jdfs)

% file=導出csv文件的存儲路徑,sep設置","為分隔符,row.names=F設置沒有行名,col.names默認第一行為列名

write.table(jdf,file="C:\\Users\\ThinkPad\\Desktop\\1.csv",sep=",",row.names=FALSE)



批量轉化

% 加載轉換json文件所需模塊

install.packages("rjson")

install.packages("plyr")

library("rjson")

library("plyr")

% 加載導出/寫入文件模塊

library("readr")

% n=文件個數(shù)

n=100

for(i in 1:n)

{

% 此處json文件名為編號1至n

? x_name<-paste("C:\\Users\\ThinkPad\\Desktop\",i,sep="")

% 導入json文件路徑

? file_name<-paste(x_name,"json",sep=".")

% 轉出csv此處json文件名為編號1至n

? y_name<-paste("C:\\Users\\ThinkPad\\Desktop\\",i,sep="")

% 轉出csv文件路徑

? ex_name<-paste(y_name,"csv",sep=".")

% 導入json文件

? jdata<-fromJSON(file=file_name)

% 獲取json文件中一級數(shù)據(jù)的層數(shù)

? num=length(jdata)

% 設置循環(huán),獲取各層一級數(shù)據(jù)

? for (j in 1:num)

? {

% 獲取各層三級數(shù)據(jù)

? ? ? jd<-jdata[[j]]$data$rows

% 將三級數(shù)據(jù)轉化為數(shù)據(jù)框格式

? ? ? jdfs<-lapply(jd,function(k)

? ? ? ? ? {

? ? ? ? ? ? as.data.frame(k)})

% 將數(shù)據(jù)框格式的各層三級數(shù)據(jù)按列組合

? ? ? jdf<-rbind.fill(jdfs)

% 確保輸出的數(shù)據(jù)為數(shù)據(jù)庫格式

? ? ? jdf<-as.data.frame(jdf)

%??write_excel_csv()函數(shù)可以保證存儲漢字不會亂碼

%?append=0時,數(shù)據(jù)直接覆蓋原有文件數(shù)據(jù);=1時,在原文件后增加數(shù)據(jù)

%?col_names=0時,首行不為列名;=1時,首行為列名

? ? ? write_excel_csv(jdf,path=ex_name,append=!!(j-1),col_names=!(j-1))

? }

}

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容