Simple JSON ist ein von Google entwickeltes Java JSON -Parsing -Framework, das auf dem Apache -Protokoll entwickelt wurde.
JSON-Simple-Homepage: //www.vevb.com/softs/455885.html
Die heruntergeladene Datei lautet: json_simple.jar
Beispiel 1: Sehr bequeme Möglichkeit, JsonValue zu verwenden
System.out.println("=========================================; String s="[0,{/"1/":{/"2/":{/"3/":{/"4/":[5,{/"6/":7}]}}}]"; Object OBJ = JSONVALUE.PARSE (S); obj2 = (jsonObject) array.get (1); S = "{}";JsonObject erbt die Karte, während JsonArray die Liste erbt, sodass Sie die Standardmethode für Karte und Liste verwenden können, um JsonObject und JsonArray zu verwenden.
JsonValue kann Arrays oder Objekte verwenden.
Beispiel 2: Schneller Weg, mit JsonParser mit
JsonParser Parser = new JsonParser (); System.out.println("==================================================================================== Object obj=parser.parse(s); JSONArray Array = (jsonArray) obj; System.out.println ("===== Feld /" 1 /"=================================== SYSTEM. S = "5,]";Die Verwendung von JsonParser erfordert die Ausnahme, um gefangen zu werden.
Beispiel 3: Ausnahmebehandlung
String jsonText = "[[Null, 123,45,/" a // tb c/"]}, true"; JsonParser Parser = new JsonParser (); try {parser.parse (jsonText); } catch (parseException pe) {System.out.println ("Position:" + pe.getPosition ()); System.out.println (pe); }Ausführungsergebnisse:
Position: 25 Unerwartete Token Right SCRECE (}) an Position 25.
Beispiel 4: Containerfabrik
Verwenden Sie die Containerfaktor -Klasse, um eine Containerfabrik zu erstellen.
String jsonText = "{/" First/": 123,/" Second/": [4, 5, 6],/" dritter/": 789}"; JsonParser Parser = new JsonParser (); ContainerFactory ContainerFactory = new ContainerFactory () {public list creatarrayContainer () {return New LinkedList (); } public map createObjectContainer () {neu LinkedHasMap () zurückgeben; }}; try {map json = (map) parser.parse (jsonText, containerFactory); Iterator iter = json.EntrySet (). Iterator (); System.out.println ("== ITERATET ERGEBNIS =="); while (iter.hasnext ()) {map.Entry -Eintrag = (Map.Entry) iter.next (); System.out.println (Eintrag.Getkey () + "=>" + Eintrag.getValue ()); } System.out.println ("== tojonstring () =="); System.out.println (jsonValue.tojonstring (json)); } catch (parseException pe) {System.out.println (pe); }Die Ergebnisse sind wie folgt:
== ITERATET ERGEBNIS == First => 123 Second => [4,5,6] dritter => 789 == tojonstring () == {"First": 123, "zweiten": [4,5,6], "dritter": 789} Wenn Sie keine Containerfabriken verwenden, verwendet Simple-Json standardmäßig JsonObject und JsonArray. Beispiel 5: Stoppable SAX -Inhaltsverarbeitung SimpleJson empfiehlt eine einfache SAX -Inhaltsverarbeitungsmethode, um Textströme zu verarbeiten. Der Benutzer kann zu einem beliebigen Punkt im logischen Eingabestream bleiben, dann andere Logik verarbeiten und dann mit der vorherigen Verarbeitung fortfahren. Warten Sie nicht, bis der gesamte Strom verarbeitet wird. Hier ist ein Beispiel. Keyfinder.java: Klasse Keyfinder implementiert ContentHandler {private Objektwert; privat boolean gefunden = falsch; privates boolescher Ende = Falsch; privater Stringschlüssel; private String MatchKey; public void setMatchKey (String MatchKey) {this.matchKey = matchKey; } öffentliches Objekt getValue () {Rückgabewert; } public boolean isend () {return End; } public void setFound (boolean gefunden) {this.found = gefunden; } public boolean isFound () {return gefunden; } public void startjson () löst ParseException aus, ioException {found = false; Ende = falsch; } public void endjson () löscht ParseException, ioException {end = true; } public boolean primitive (Objektwert) löscht ParseException, iOException {if (key! this.Value = Wert; Key = null; false zurückgeben; }} return true; } public boolean startArray () löst ParseException aus, ioException {return true; } public boolean startObject () löscht ParseException, ioException {return true; } public boolean startObjectEnry (String -Schlüssel) löst ParseException aus, IoException {this.key = key; zurückkehren; } public boolean endArray () löst ParseException aus, ioException {return false; } public boolean endObject () löst ParseException aus, ioException {return true; } public boolean endObjectEnry () löst ParseException aus, ioException {return true; }} Hauptlogik: String jsonText = "{/" First/": 123,/" Second/": [{/" K1/": {/" id/":/" id1/"}}, 4, 5, 6, {/" id/": 123}],/" dritte/": 789,/" id/": null}"; JsonParser Parser = newJsonParser (); Keyfinder finder = newKeyfinder (); finder.setMatchKey ("id"); try {while (! finder.isend ()) {parser.parse (jsonText, finder, true); if (finder.isfound ()) {folder.setFound (false); System.out.println ("Found id:"); System.out.println (folder.getValue ()); }}} catch (parseException pe) {pe.printstacktrace (); } Ausführungsergebnisse:gefundene ID: ID1 gefunden ID: 123 gefunden ID: NULLBeispiel 6: Das gesamte Objektdiagramm wird mit SAX-Like analysiert
Class Transformator implementiert ContentHandler {private Stack Evalestack; öffentliches Objekt GetResult () {if (Evalestack == NULL || EVERTACK.SIZE () == 0) return null; return Evalestack.peek (); } public boolean endArray () löst ParseException aus, ioException {widchback (); zurückkehren; } public void endjson () löst ParseException aus, ioException {} public boolean endObject () löscht ParseException, ioException {widchback (); zurückkehren; } public boolean endObjectEnry () löscht ParseException, ioException {Object value = Evalestack.pop (); Object Key = Evalestack.pop (); Map parent = (map) evalestack.peek (); parent.put (Schlüssel, Wert); zurückkehren; } private void wackback () {if (Valuestack.size ()> 1) {Object value = Evalestack.pop (); Object Prev = Evalestack.peek (); if (previnstanceof string) {Evalestack.push (Wert); }}} private void ConsumumValue (Objektwert) {if (Valuestack.size () == 0) Evalestack.push (value); sonst {Object Prev = Evalestack.peek (); if (previnformof list) {list array = (list) prev; array.add (Wert); } else {Evalestack.push (Wert); }}} public boolean primitive (Objektwert) löscht ParseException, ioException {ConsumptValue (Wert); zurückkehren; } public boolean startArray () löscht ParseException, ioException {list array = new JsonArray (); Verbrauchswert (Array); evalestack.push (Array); zurückkehren; } public void startjson () löst ParseException aus, ioException {Valuestack = new stack (); } public boolean startObject () löscht ParseException, ioException {MAP -Objekt = new JSONObject (); Verbraucher (Objekt); evalestack.push (Objekt); zurückkehren; } public boolean startObjectEnry (String -Schlüssel) löst ParseException, ioException {Evalestack.push (Schlüssel) aus; zurückkehren; }} Hauptmethodelogik:String jSonstring = <Eingabe json text>; Objektwert = null; JsonParser Parser = new JsonParser (); Transformator Transformator = neuer Transformator (); Parser.Parse (JSonstring, Transformator); value = Transformator.getResult ();Ausführungsergebnisse:
String jSonstring = <Eingabe json text>; Objektwert = null; JsonParser Parser = newJsonParser (); Value = Parser.Parse (jSonstring);HINWEIS: JSONPAUSER ist nicht mit Thread-Safe.
JSON_ENCODE - JSON -Codierung von Variablen.
Beschreibung: String json_encode ($ value), gibt die JSON -Form des Wertwerts zurück.
Parameter: Der zu codierende Wert kann ein beliebiger Datentyp sein, mit Ausnahme des Ressourcentyps
Diese Funktion kann nur UTF-8-codierte Daten akzeptieren (Übersetzung Hinweis: Bezieht sich auf Daten des Zeichen-/String-Typs).
Rückgabewert: Wenn die Codierung erfolgreich ist, wird eine in JSON dargestellte Zeichenfolge zurückgegeben.