Lorsque vous tentez d'analyser des fichiers JSON volumineux, tels que les données d'enchères massives fournies par Blizzard Entertainment, en identifiant le la stratégie la plus efficace est cruciale. Les approches conventionnelles, telles que l'analyse ligne par ligne ou le fractionnement de fichiers, s'avèrent inefficaces pour des ensembles de données aussi volumineux.
La bibliothèque de traitement Jackson JSON apparaît comme une solution exceptionnelle. Jackson fusionne de manière transparente le streaming et l'analyse de modèles arborescents, permettant une traversée efficace de l'ensemble du fichier en continu, tout en permettant simultanément l'accès à des objets individuels sous forme de structures arborescentes.
Streaming et analyse de modèles arborescents avec Jackson :
Considérez le fichier JSON suivant :
{ "records": [ {"field1": "aaaaa", "bbbb": "ccccc"}, {"field2": "aaa", "bbb": "ccc"} ], "special message": "hello, world!" }
Le streaming de Jackson et La stratégie d'analyse de modèle arborescent permet les opérations suivantes :
Exemple de code :
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; while (current != JsonToken.END_OBJECT) { String fieldName = jp.getCurrentName(); current = jp.nextToken(); if (fieldName.equals("records")) { JsonNode node; while (current != JsonToken.END_ARRAY) { node = jp.readValueAsTree(); System.out.println("field1: " + node.get("field1").getValueAsText()); System.out.println("field2: " + node.get("field2").getValueAsText()); } } else { jp.skipChildren(); } } } }
Ce code démontre efficacement les capacités combinées de streaming et d'analyse de modèle arborescent de Jackson. Il lit un gros fichier JSON, analyse des informations spécifiques (telles que les valeurs « field1 » et « field2 ») dans des arborescences et fournit un accès aléatoire à ces données, tout en minimisant l'utilisation de la mémoire.
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!