json格式預(yù)覽:
{{data{
? ? ? ? ? rows{
? ? ? ? ????? ? ? ? ???????????????? ? ? }
? ? ? ? ? ? ? ? .......
? ? ? ? ? ? ? ???? {
? ? ? ? ? ? ? ? ? ? ??????????????????? }? }
? ? ? }}
? .......
{{data{
? ? ? ? ? rows{
? ? ? ? ? ? ? ? ? ?????????????????????????? ?}
? ? ? ? ? ? ? ? ......
?????????????????{
??????????????????????????????? ? ? ? ?????}? }
? ? ? }}
簡述:
其中一個(gè)data列表為一級(jí)數(shù)據(jù)咙俩,一個(gè)rows列表為二級(jí)數(shù)據(jù)艘蹋,rows列表內(nèi)為三級(jí)數(shù)據(jù)
該json文件中包含多層一級(jí)數(shù)據(jù)换衬,各個(gè)一級(jí)數(shù)據(jù)中僅包含一層二級(jí)數(shù)據(jù),各個(gè)二級(jí)數(shù)據(jù)中包含多層二級(jí)數(shù)據(jù)
單個(gè)文件格式轉(zhuǎn)化
% 加載所需模塊
install.packages("rjson")
library("rjson")
library("plyr")
% file=json文件所在路徑
jdata<- fromJSON(file="C:\\Users\\ThinkPad\\Desktop\\1.json")
% 導(dǎo)出一層一級(jí)數(shù)據(jù)
jd<-jdata[[1]]$data$rows
jdfs<-lapply(jd,function(j){
? ? ? as.data.frame(j)
? ? ? })
jdf<-rbind.fill(jdfs)
% file=導(dǎo)出csv文件的存儲(chǔ)路徑堰酿,sep設(shè)置","為分隔符路狮,row.names=F設(shè)置沒有行名,col.names默認(rèn)第一行為列名
write.table(jdf,file="C:\\Users\\ThinkPad\\Desktop\\1.csv",sep=",",row.names=FALSE)
批量轉(zhuǎn)化
% 加載轉(zhuǎn)換json文件所需模塊
install.packages("rjson")
install.packages("plyr")
library("rjson")
library("plyr")
% 加載導(dǎo)出/寫入文件模塊
library("readr")
% n=文件個(gè)數(shù)
n=100
for(i in 1:n)
{
% 此處json文件名為編號(hào)1至n
? x_name<-paste("C:\\Users\\ThinkPad\\Desktop\",i,sep="")
% 導(dǎo)入json文件路徑
? file_name<-paste(x_name,"json",sep=".")
% 轉(zhuǎn)出csv此處json文件名為編號(hào)1至n
? y_name<-paste("C:\\Users\\ThinkPad\\Desktop\\",i,sep="")
% 轉(zhuǎn)出csv文件路徑
? ex_name<-paste(y_name,"csv",sep=".")
% 導(dǎo)入json文件
? jdata<-fromJSON(file=file_name)
% 獲取json文件中一級(jí)數(shù)據(jù)的層數(shù)
? num=length(jdata)
% 設(shè)置循環(huán),獲取各層一級(jí)數(shù)據(jù)
? for (j in 1:num)
? {
% 獲取各層三級(jí)數(shù)據(jù)
? ? ? jd<-jdata[[j]]$data$rows
% 將三級(jí)數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)框格式
? ? ? jdfs<-lapply(jd,function(k)
? ? ? ? ? {
? ? ? ? ? ? as.data.frame(k)})
% 將數(shù)據(jù)框格式的各層三級(jí)數(shù)據(jù)按列組合
? ? ? jdf<-rbind.fill(jdfs)
% 確保輸出的數(shù)據(jù)為數(shù)據(jù)庫格式
? ? ? jdf<-as.data.frame(jdf)
%??write_excel_csv()函數(shù)可以保證存儲(chǔ)漢字不會(huì)亂碼
%?append=0時(shí)慢睡,數(shù)據(jù)直接覆蓋原有文件數(shù)據(jù);=1時(shí)铡溪,在原文件后增加數(shù)據(jù)
%?col_names=0時(shí)漂辐,首行不為列名;=1時(shí)棕硫,首行為列名
? ? ? write_excel_csv(jdf,path=ex_name,append=!!(j-1),col_names=!(j-1))
? }
}