R語(yǔ)言 Json文件編輯/讀寫

殺殺

有時(shí)候?qū)?shù)據(jù)的處理需要用到j(luò)son格式的文件,json格式其實(shí)就是文本格式的序列化的對(duì)象,可以用簡(jiǎn)單的符號(hào)組成易于理解和計(jì)算機(jī)編碼的格式。
基本的格式類似于:
{
"name" : "file",
"sample" : ["daf","dfgs"],
"patient" : ["a","b","c"]
}
簡(jiǎn)單的txt或csv到j(luò)son的轉(zhuǎn)換可以使用網(wǎng)上提供的編輯器,但是多個(gè)文件的批量轉(zhuǎn)換最好使用代碼。在R中,list格式的對(duì)象可以直接轉(zhuǎn)換為json格式,并輸出。今天總結(jié)的是json的讀入,編輯和寫出。

現(xiàn)在有一個(gè)json文件,用notepad打開:

大概的格式是這樣的?,F(xiàn)在我需要多次修改input和sampleid的內(nèi)容,并輸出很多個(gè)文件。
首先加載包并讀入文件

library(rjson)
library(jsonlite)
data <- fromJSON("demo.json")

data的框架大致是這樣(內(nèi)容不一致)

直接讀成了list的格式。我們就可以使用編輯list的方式去編輯data。

data$sample_id <- 'Glioma_result_2'
data$INPUT <- newdataframe[1:30,]

這邊是修改了兩個(gè)list下的內(nèi)容,如果需要新增,也可以直接輸入如

data$newdata <- "new"

list就編輯好了,接下來(lái)需要將這個(gè)list轉(zhuǎn)換為json的樣子

datajson <- toJSON(data, pretty=T,auto_unbox = T)
datajson2 <- prettify(datajson , indent = 4)

其中pretty參數(shù)指的是需要一些縮進(jìn),可以對(duì)比一下T和F

下面這個(gè)圖是參數(shù)為F的時(shí)候,可以看出沒有任何的縮進(jìn),回車和空格,所以一般我們會(huì)選擇T的參數(shù),但是其實(shí)上圖的縮進(jìn)也很不規(guī)則,沒有標(biāo)準(zhǔn)的 tab縮進(jìn),INPUT中的對(duì)象也沒有分行。因此可以使用prettify函數(shù),將格式規(guī)整。規(guī)整后的格式:

可以看出很整齊了。
auto_unbox 這個(gè)參數(shù)指的是當(dāng)某個(gè)對(duì)象只包含一個(gè)參數(shù)時(shí),要不要添加[ ]方框。如我的list下的sample_id只有一個(gè)內(nèi)容,這時(shí)候我不需要方括號(hào),因此這個(gè)參數(shù)使用的是T。只有在包含多個(gè)對(duì)象的時(shí)候才會(huì)用[ ]。

都編輯好之后我們就需要輸出文件,使用代碼寫出。

cat(datajson2 , file = "result.json", fill = FALSE, labels = NULL, append = FALSE)

批量使用的時(shí)候,把這幾行代碼放進(jìn)for循環(huán)中就可以了,file = " "的代碼可以用paste函數(shù),這樣可以輸出不同的文件名。

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

相關(guān)閱讀更多精彩內(nèi)容

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