Simple JSON est un framework d'analyse Java JSON développé par Google, basé sur le protocole Apache.
Page d'accueil de Json-Simple: //www.vevb.com/softs/455885.html
Le fichier téléchargé est: json_simple.jar
Exemple 1: moyen très pratique d'utiliser JSONValue
System.out.println ("======================================= OBJ = JSONVALUE.PARSE (S); Obj2 = (JSONObject) Array.get (1); S = "{}"; obj = JSONVALUe.PARSE (S);JSONObject hérite la carte, tandis que JSONArray Hérite de la liste, vous pouvez donc utiliser le mode de carte et la liste standard pour utiliser JSONObject et JSONArray.
JSONValue peut utiliser des tableaux ou des objets.
Exemple 2: chemin rapide, en utilisant JSonParser
JsonParser parser = new JsonParser (); System.out.println("==================================================================================== Object obj=parser.parse(s); JSONArray Array = (JSONArray) obj; System.out.println ("======== Le 2ème élément de l'arrose ================; System.out.println ("===== Field /" 1 / "================================= S = "[5,]"; Obj = Parser.Parse (S);L'utilisation de JsonParser nécessite l'exception pour être capturée.
Exemple 3: Gestion des exceptions
String jSonText = "[[null, 123.45, /" a // tb c / "]}, true"; JsonParser parser = new JsonParser (); essayez {parser.parse (jsonText); } catch (parseException pe) {System.out.println ("position:" + pe.getPosition ()); System.out.println (PE); }Résultats de l'exécution:
Position: 25 Jeton inattendu avec une attelle droite (}) en position 25.
Exemple 4: Usine de conteneurs
Utilisez la classe ContainerFactory pour créer une usine de conteneurs.
String JSonText = "{/" First / ": 123, /" Second / ": [4, 5, 6], /" Third / ": 789}"; JsonParser parser = new JsonParser (); ContenerFactory ContainerFactory = new ContainerFactory () {public list createArayContainer () {return new LinkedList (); } Map public createObjectContainer () {return new LinkedHashMap (); }}; essayez {map json = (map) parser.parse (jsonText, contenerFactory); Iterator iter = json.entryset (). Iterator (); System.out.println ("== itérater result =="); while (iter.hasnext ()) {map.entry entrée = (map.entry) iter.next (); System.out.println (entry.getKey () + "=>" + entry.getValue ()); } System.out.println ("== tojSontring () =="); System.out.println (JSONValue.tojSontring (JSON)); } catch (parseException pe) {System.out.println (pe); }Les résultats sont les suivants:
== itérate Result == First => 123 seconde => [4,5,6] tiers => 789 == TOJSONSTRING () == {"First": 123, "Second": [4,5,6], "Troisième": 789} Si vous n'utilisez pas les usines de conteneurs, Simple-JSON utilise JSONObject et JSONArray par défaut. Exemple 5: Traitement de contenu SAX Stopable SimpleJSON recommande une méthode de traitement de contenu SAX arrêtée simple pour traiter les flux de texte. L'utilisateur peut rester à tout moment du flux d'entrée logique, puis traiter une autre logique, puis continuer le traitement précédent. N'attendez pas que tout le flux soit traité. Voici un exemple. Keyfinder.java: Class KeyFinder implémente ContentHandler {private Object Value; Boolean privé trouvé = false; end booléen privé = false; clé de chaîne privée; MatchKey de chaîne privée; public void setMatchKey (String MatchKey) {this.matchKey = MatchKey; } Objet public getValue () {return Value; } public boolean isEnd () {return end; } public void setFound (booléen trouvé) {this.found = find; } public boolean isFound () {return trouvé; } public void startjson () lève ParseException, ioException {fondé = false; end = false; } public void endjson () lève ParseException, ioException {end = true; } public boolean primitive (objet Valeur) lève ParseException, ioException {if (key! = null) {if (key.equals (matchKey)) {find = true; this.value = valeur; key = null; retourne false; }} return true; } public boolean startArray () lève ParseException, ioException {return true; } public boolean startObject () lève ParseException, ioException {return true; } public boolean startObjectentry (string key) lève ParseException, ioException {this.key = key; Retour Vrai; } public boolean endArray () lève ParseException, ioException {return false; } public boolean endObject () lève ParseException, ioException {return true; } public boolean endObjectentry () lève ParseException, ioException {return true; }} Logique principale: String jSonText = "{/" premier / ": 123, /" second / ": [{/" k1 / ": {/" id / ": /" id1 / "}}, 4, 5, 6, {/" id / ": 123}], /" tiers / ": 789, /" id / ": null}";; JsonParser parser = newjSonParser (); KeyFinder Finder = NewKeyFinder (); finder.setmatchKey ("id"); essayez {while (! finder.isend ()) {parser.parse (jsonText, Finder, true); if (finder.isfound ()) {finder.setFound (false); System.out.println ("ID trouvé:"); System.out.println (Finder.GetValue ()); }}} catch (parseException pe) {pe.printStackTrace (); } Résultats de l'exécution:ID trouvé: id1 ID trouvé: 123 ID trouvé: nullExemple 6: Le graphique de l'objet entier est analysé à l'aide de sax
Class Transformateur implémente ContentHandler {Private Stack ValuEstack; Objet public getResult () {if (valalestack == null || ValuStack.size () == 0) renvoie null; return ValuStack.Peek (); } public boolean endArray () lève ParseException, ioException {trackback (); Retour Vrai; } public void endjson () lève ParseException, ioException {} public boolean endObject () lève ParseException, ioException {trackback (); Retour Vrai; } public boolean endObjectEntry () lève ParseException, ioException {objet Value = ValuEstack.pop (); Key object = ValuEstack.Pop (); Map Parent = (map) ValuEstack.Peek (); Parent.put (clé, valeur); Retour Vrai; } private void trackback () {if (valuestack.size ()> 1) {objet Value = ValuStack.pop (); Object Prev = ValuEstack.Peek (); if (prev instanceOf String) {valluestack.push (valeur); }}} private void ConsumptionValue (Valeur d'objet) {if (ValuEstack.Size () == 0) ValuleStack.push (valeur); else {object prev = ValuEstack.Peek (); if (prev instanceOf list) {list array = (list) prev; array.add (valeur); } else {ValuleStack.push (valeur); }}} public boolean primitive (objet Value) lève ParseException, ioException {ConsumptionValue (valeur); Retour Vrai; } public boolean startArray () lève ParseException, ioException {list array = new JSONArray (); VALUATION DE CONSUMÉ (tableau); ValueStack.push (Array); Retour Vrai; } public void startjson () lève ParseException, ioException {valuestack = new Stack (); } public boolean startObject () lève ParseException, ioException {map object = new JSONObject (); consommation de consommation (objet); ValuEstack.push (objet); Retour Vrai; } public boolean startObjectentry (string key) lève ParseException, ioException {valluestack.push (key); Retour Vrai; }} Logique de la méthode principale:String JSontring = <Input JSON Text>; Valeur d'objet = null; JsonParser parser = new JsonParser (); Transformateur transformateur = nouveau transformateur (); parser.parse (jsonstring, transformateur); Value = transformateur.getResult ();Résultats de l'exécution:
String JSontring = <Input JSON Text>; Valeur d'objet = null; JsonParser parser = newjSonParser (); Value = Parser.Parse (JSontring);Remarque: JSONPauser n'est pas un thread-safe.
JSON_ENCODE - Encodage JSON des variables.
Description: String json_encode ($ value), renvoie le formulaire JSON de la valeur de valeur.
Paramètres: La valeur à coder peut être n'importe quel type de données à l'exception du type de ressource
Cette fonction ne peut accepter que les données codées UTF-8 (Remarque: Remarque: fait référence aux données du type de caractère / chaîne)
Valeur de retour: si le codage est réussi, une chaîne représentée dans JSON sera renvoyée.