我有一個來自 mongodb 匯出的 db.json 檔案。json 的結構如下:
{
"item1" : "test",
"item2" : "test",
"item3" : "test"
}
{
"item1" : "string",
"item2" : "string",
"item3" : "string"
}
如您所見,它沒有逗號分隔符,也沒有格式化為序列化物件的集合。
我正在嘗試使用 Jackson 將此 db.json 反序列化為一個 java 類,但顯然它只決議第一對括號,因為這在標準 json 格式中不被識別為陣列。要被認可,它應該是這樣的。
[{
"item1" : "test",
"item2" : "test",
"item3" : "test"
},
{
"item1" : "string",
"item2" : "string",
"item3" : "string"
}]
我無法手動修改 json,因為它是 15GB 的文本。這是我試過的
ObjectMapper mapper = new ObjectMapper();
Table[] tablesFromJSON = mapper.readValue(Paths.get("db.json").toFile(), Table[].class);
我應該如何解決這個問題?
uj5u.com熱心網友回復:
Table[] tablesFromJSON = mapper.readValue
您的機器是否安裝了約 64GB 的 RAM?因為否則,任何嘗試與 15GB.json檔案進行對比的嘗試都將花費很長時間,然后OutOfMemoryError顯然會被 .
因此,我非常懷疑您是否真的想要您似乎在要求的東西。
相反,您希望流式傳輸此資料。就拿InputStream,使用一些JSON庫來讀取一個JSON物件的料流的,在處理Java代碼這個物件,而不是將它存盤在一個巨大的ArrayList或HashMap還是什么不-的方式,它會后當作垃圾收集,并然后從流中讀取更多位元組,剛好足以容納下一個物件,依此類推。
因此:
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334124.html
上一篇:JSON輸入意外結束-純JS
