У меня большой JSON-файл размером около 65 МБ в формате ниже
{
"Root Node": {
"Node1": {
"Node1.1": [{
"logLevel":"INFO"
"count" : 20
},{
"logLevel":"DEBUG"
"count" : 200
},{
"logLevel":"ERROR"
"count" : 2000
}],
"Node1.2": "",
"Node1.3": {
"fromDate": "2014-11-11T14:59:59",
"toDate": "2014-11-11T14:00:00"
}
}
}
}
Я использую Джексон для анализа большого файла. Я хочу прочитать узел Node1.3затем прочитайте Node1.1 и создайте объект POJO, который будет иметь все данные из массива Node1.1 и с каждым данным будут ассоциированы fromDate и toDate.Я могу проанализировать файл, если я иду в последовательном порядке, но Node1.3 читается в конце.
Я использую код ниже для анализа файла
public class TempMain {
public static void main(String [] args) throws IOException, ParseException {
JsonFactory jfactory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper();
try(JsonParser jParser = jfactory.createParser(new File("/tmp/file.json"))) {
// loop until token equal to "}"
while (jParser.nextToken() != com.fasterxml.jackson.core.JsonToken.END_OBJECT) {
String fieldname = jParser.getCurrentName();
jParser.nextFieldName();
if ("Node1.1".equals(fieldname)) {
/** current token is "[", move next messages is array, loop until token equal to "]"
**/
jParser.nextToken();
while(jParser.nextToken() == com.fasterxml.jackson.core.JsonToken.START_OBJECT) {
// read everything from this START_OBJECT to the matching END_OBJECT
// and return it as a tree model ObjectNode
ObjectNode node = mapper.readTree(jParser);
// Logic to process the data
}
}
}
jParser.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}