Maison > Java > javaDidacticiel > le corps du texte

Traitement de gros fichiers JSON en Java

Barbara Streisand
Libérer: 2024-10-21 16:11:29
original
931 Les gens l'ont consulté

Large JSON file processing in Java

Un traitement efficace des fichiers JSON est important dans les applications modernes. Si le fichier JSON est volumineux, nous devons le gérer correctement pour éviter les erreurs de mémoire insuffisante et une forte consommation de ressources.

GSON est l'une des meilleures bibliothèques disponibles en Java pour traiter les fichiers JSON.

  • Il fournit une instance thread-safe pour réutiliser le même objet pour traiter plusieurs requêtes.

  • Il ne s'attend à ce qu'aucune annotation soit disponible pour la sérialisation et la désérialisation, sauf cas particulier.

  • Il fournit les méthodes toJson() et fromJson() pour la sérialisation et la désérialisation.

  • Il fournit un support pour lire le contenu à l'aide de lecteurs de flux.

Vous trouverez ci-dessous l'extrait de code permettant de lire le fichier à l'aide de lecteurs de flux Java et de le convertir en objet Java. J'applique ma logique métier pour 100 enregistrements.

Assomption Le fichier JSON contient un tableau de données comme ci-dessous.

[
{
"identifiant": 1,
"firstName": "Emily",
"nom": "Johnson"
>
]

Code Java

private Optional<Boolean> readFile(String path) {
    try (InputStream inputStream = Files.newInputStream(Path.of(path));
         JsonReader reader = new JsonReader(new InputStreamReader(inputStream))) {
        Instant start = Instant.now();
        reader.beginArray();
        List<User> users = new ArrayList<>();
        while (reader.hasNext()) {
            users.add(gson.fromJson(reader, User.class));
            if (users.size() >= 100) {
                //Initiate your records processing
                //You can consider processing it async way handling failure scenarios properly
                users.clear();
            }
        }
        reader.endArray();
        LOGGER.info("Total time taken to process file:{}, Duration:{} (millis)", path, Duration.between(start, Instant.now()).toMillis());
    } catch (Exception e) {
        LOGGER.error("", e);
        return Optional.of(false);
    }
    return Optional.of(true);
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal