Разбор JSON с Джексоном

я используюДжексон разобрать JSON из JSONinputStream который выглядит следующим образом:

[
      [ 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
]

Это оригинальная ссылка на фид:http://uhunt.felix-halim.net/api/p

Я хочу проанализировать его и сохранить только первые 4 элемента каждого массива и пропустить остальные 18 элементов.

36
100
The 3n + 1 problem
56717

Структура кода, которую я пробовал до сих пор:

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

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

}

Поскольку этот канал довольно большой, мне нужно делать это эффективно с меньшими затратами и памятью. Также есть три модели для преобразования JSON:Потоковое API,Привязка данных а такжеМодель дерева, Какой из них подходит для моей цели?

Как я могу эффективно проанализировать этот JSON с Джексоном? Как я могу пропустить эти 18 элементов и перейти к следующему массиву для лучшей производительности?

Изменить: (Решение)

Jackson а такжеGSon оба работают практически в одном и том же механизме (инкрементный режим, поскольку контент читается и записывается постепенно), я переключаюсь наGSON как у него есть функцияskipValue() (довольно уместно с именем). Хотя ДжексонаnextToken() будет работать как,skipValue()GSON кажется более гибким для меня. Спасибо @Kowser bro за его рекомендацию, я узнал о GSON раньше, но почему-то проигнорировал его. Это мой рабочий код:

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();

Ответы на вопрос(1)

Ваш ответ на вопрос