Analizando JSON con Jackson

estoy usandoJackson para analizar JSON de un jsoninputStream que se parece a lo siguiente:

[
      [ 36,
        100,
        "The 3n + 1 problem",
         56717,
         0,
         1000000000,
         0,
         6316,
         0,
         0,
         88834,
         0,
         45930,
         0,
         46527,
         5209,
         200860,
         3597,
         149256,
         3000,
         1
      ],
      [
         ........
      ],
      [
         ........
      ],
         .....// and almost 5000 arrays like above
]

Este es el enlace de alimentación original:http://uhunt.felix-halim.net/api/p

Quiero analizarlo y mantener solo los primeros 4 elementos de cada matriz y omitir otros 18 elementos.

36
100
The 3n + 1 problem
56717

Estructura de código que he intentado hasta ahora:

while (jsonParser.nextToken() != JsonToken.END_ARRAY) {

        jsonParser.nextToken(); // '['
        while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
            // I tried many approaches here but not found appropriate one
         }

}

Como esta fuente es bastante grande, debo hacer esto de manera eficiente con menos gastos generales y memoria. También hay tres modelos para procesar JSON:API de streaming, El enlace de datos yModelo de arbol. ¿Cuál es apropiado para mi propósito?

¿Cómo puedo analizar este json eficientemente con Jackson? ¿Cómo puedo omitir esos 18 elementos y saltar a la siguiente matriz para un mejor rendimiento?

Edición: (Solución)

Jackson yGSon ambas funcionan casi en el mismo mecanismo (modo incremental, ya que el contenido se lee y escribe de manera incremental), estoy cambiando aGSON ya que tiene una funciónskipValue() (bastante apropiado con el nombre). Aunque JacksonnextToken() funcionará comoskipValue(), GSON Me parece más flexible. Gracias a @Kowser bro por su recomendación, llegué a conocer acerca de GSON antes, pero de alguna manera lo ignoré. Este es mi código de trabajo:

reader.beginArray();
while (reader.hasNext()) {
   reader.beginArray(); 
   int a = reader.nextInt(); 
   int b = reader.nextInt();
   String c = reader.nextString();
   int d = reader.nextInt();
   System.out.println(a + " " + b + " " + c + " " + d);
   while (reader.hasNext())
      reader.skipValue();
   reader.endArray();
} 
reader.endArray();
reader.close();

Respuestas a la pregunta(1)

Su respuesta a la pregunta