以下是這種情況:我試圖將2,089個JSON文件合併到一個JSON文件中。它們都位於名爲「貸方」的目錄中。gulp-merge-json:忽略輸入文件?
我已經嘗試了幾個Python腳本,但現在我想使用名爲gulp-merge-json的gulp模塊(現在推薦多於一次)。
我運行gulp任務,加載時間表明它真正處理所有2000多個文件(與我剛剛測試的3個工作相比);但是我的結果文件只包含來自單個文件的JSON數據。 Odder仍然(也許是對解決方案的一種暗示)是正在使用的文件標題爲999.json。這些文件全部命名爲x.json,其中1 < x < 2,090。
我沒有看到任何在數據中引起這個錯誤的東西。文件999在其他方面似乎並不特別,除了它顯然具有最高的總結標題值。
夠了;這裏是代碼:
gulp.src('/Users/me/Documents/lenders/*.json')
.pipe(merge('combined.json'))
.pipe(gulp.dest('/Users/me/Documents/LendersData'));
把它放在一個具有所有正確安裝的依賴項的gulp文件中,並且它運行。簡單地說,這個過程(假設)使用json指定的glob來獲取貸方目錄中的所有文件,創建一個名爲LendersData的目錄,並將combined.json文件放入其中。
有沒有人有這種飲料模塊的經驗?我不知道爲什麼需要花費相當可觀的時間來運行任務,根據我輸入的數據量(以千兆字節爲單位)進行判斷,然後只留下999.json中的數據。謝謝!
編輯:我的3個JSON文件的測試不起作用。寫入輸出文件的1.json,2.json和3.json中唯一的文件是3.json。現在,這是一個指示器,只有腳本讀取的最後一個文件才被複制。在999.json的全部嘗試的情況下,如果以特定方式排序,那可能是列出的最後一個文件。我以爲我的glob會處理目錄中的每一個文件?
下面是的一個例子,我的意思是合併兩者。假設我們有兩個文件,1.json和2.json;
1.json:
{
"header":{
"total":2,"page":1,"date":"2016-08-01T17:29:57Z","page_size":1},
"lenders": [
{"lender_id":"matt","name":"Matt"}
]
}
而且2.json:
{
"header":{
"total":2,"page":2,"date":"2016-08-01T17:30:57Z","page_size":1},
"lenders": [
{"lender_id":"sarah","name":"Sarah"}
]
}
合併結果:
{
"lenders": [
{"lender_id":"matt","name":"Matt"},
{"lender_id:"sarah","name":"Sarah"}
]
}
(我知道彈出標題是一個額外的要求,但不這樣做會導致無效的JSON)
我剛剛測試它,它適用於我(或至少我如何預期它)。雖然我不確定你想要什麼輸出。 「合併」是什麼意思?該gulp插件會覆蓋匹配鍵。例如,如果您有兩個JSON文件,第一個包含「{」值「:1」,第二個包含「{」值「:2}」,則合併它們的輸出將僅爲「{」值「: 2}'(因爲第二個替換了公共鍵「值」)。因此,如果所有的JSON輸入文件都具有_exactly_相同的鍵,則應該期望輸出與最後一個文件相同。 – MadScone
如果你可以發佈'1.json'和'2.json'的例子以及期望的輸出,它應該更清楚你正在嘗試做什麼。 – MadScone
感謝MadScone,這解釋了很多。所以讀取的最後一個文件是999.json,它在輸出數據中有最後的發言權。 我的意思是合併創建一個文件,其中包含所有1.json以及2.json作爲單個有效的JSON文件。 我意識到可能會進行進一步的編輯,例如彈出無關頭文件。但是,如果我合併2,089個json文件,那麼我的意思是我希望將他們所有的個人數據整理到一個源文件中。我有更多的想法來處理這個單獨的文件(把它變成一個SQL文件)。 感謝您的迴應! – Typhon