Rumah >Java >javaTutorial >Apakah Pendekatan Terbaik untuk Menghuraikan Fail JSON Raksasa di Jawa?

Apakah Pendekatan Terbaik untuk Menghuraikan Fail JSON Raksasa di Jawa?

Barbara Streisand
Barbara Streisandasal
2024-12-01 21:49:12552semak imbas

What's the Best Approach to Parse Gigantic JSON Files in Java?

Pendekatan Terbaik untuk Menghuraikan Fail JSON yang Besar: Panduan Komprehensif

Masalah:

Menghuraikan fail JSON yang banyak menimbulkan cabaran kepada saiz mereka yang besar. Artikel ini bertujuan untuk menentukan pendekatan optimum untuk menghuraikan fail sedemikian dengan berkesan menggunakan perpustakaan GSON Java.

Penyelesaian:

Menggunakan API Jackson

Pendekatan yang disyorkan melibatkan penggunaan API Jackson. Ia menawarkan gabungan lancar penstriman dan keupayaan penghuraian model pokok, membenarkan traversal fail secara keseluruhan dan membaca objek individu ke dalam struktur pokok. Ini membolehkan pemprosesan fail JSON walaupun bersaiz gigabait dengan cekap sambil menggunakan memori yang minimum.

Contoh Pelaksanaan

Coretan kod berikut menunjukkan cara menghuraikan fail JSON yang besar menggunakan Jackson's penstriman dan penghuraian model pokok:

import org.codehaus.jackson.map.*;
import org.codehaus.jackson.*;

import java.io.File;

public class ParseJsonSample {
    public static void main(String[] args) throws Exception {
        JsonFactory f = new MappingJsonFactory();
        JsonParser jp = f.createJsonParser(new File(args[0]));
        JsonToken current;
        current = jp.nextToken();
        if (current != JsonToken.START_OBJECT) {
            System.out.println("Error: root should be object: quiting.");
            return;
        }
        while (jp.nextToken() != JsonToken.END_OBJECT) {
            String fieldName = jp.getCurrentName();
            // move from field name to field value
            current = jp.nextToken();
            if (fieldName.equals("records")) {
                if (current == JsonToken.START_ARRAY) {
                    // For each of the records in the array
                    while (jp.nextToken() != JsonToken.END_ARRAY) {
                        // read the record into a tree model,
                        // this moves the parsing position to the end of it
                        JsonNode node = jp.readValueAsTree();
                        // And now we have random access to everything in the object
                        System.out.println("field1: " + node.get("field1").getValueAsText());
                        System.out.println("field2: " + node.get("field2").getValueAsText());
                    }
                } else {
                    System.out.println("Error: records should be an array: skipping.");
                    jp.skipChildren();
                }
            } else {
                System.out.println("Unprocessed property: " + fieldName);
                jp.skipChildren();
            }
        }
    }
}

Kunci Konsep:

  • Penstriman: Penghurai memproses fail secara berurutan, didorong peristiwa.
  • Model Pokok: Objek individu dalam fail JSON ditukar menjadi pepohon hierarki struktur.
  • Akses Rawak: Model pepohon membenarkan navigasi pantas dan fleksibel dalam pepohon objek JSON.
  • Kecekapan Memori: Pendekatan penstriman memastikan bahawa keseluruhan fail tidak dimuatkan ke dalam memori secara serentak, meminimumkan penggunaan memori.

Atas ialah kandungan terperinci Apakah Pendekatan Terbaik untuk Menghuraikan Fail JSON Raksasa di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn