簡體   English   中英

讀取大型json文件

[英]read large json file

我有一個結構復雜的json文件。

{"Objects":{"items":{"item":[
{
"field1": "value1",
"field2": "value2",
"field3":[
     {
       "label1":"1",
       "label2":"2"
     },
     {
       "label1":"3",
       "label2":"4"
     }]
}
,
{
//same structure as above object
}
]}}}

文件大小略大於1GB。 我需要讀取一個對象,然后查看特定標簽的值是什么,如果它與我的列表匹配,則需要將該對象寫入另一個文件中,否則不可以。

我知道像JSONSimple這樣的常規JSON解析器將無法將數據保存到內存中,因此將無法正常工作。 我正在嘗試使用Jackson,但由於每次需要一個令牌,因此很難遍歷所有對象。 對於此JSON格式,使用Jackson的流和樹結構的有效方法是什么。

或者我可以通過什么方式使用腳本來獲取數據並使用它?

可能您可以多次調用JsonParser來調用nextToken(),直到獲得令牌ID_START_ARRAY,再調用nextToken()移至第一個項目對象的開頭,然后將代表“ item”的解析器和POJO類輸入到ObjectMapper.readValue()中。 ( https://github.com/FasterXML/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java ),重復進行,直到找不到更多對象為止。 POJO可以使用https://github.com/astav/JsonToJava/wiki/JsonToJava之類的東西手寫或生成

或完全跳過Jackson-自己編寫一個標記器,將提取單個“ item” json元素並將其輸入JSONSimple。 這樣,您可能需要重新設計輪子,但可以避免獲得很多依賴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM