Simple JSON es un marco de análisis de Java JSON desarrollado por Google, basado en el Protocolo Apache.
Página de inicio de Json-Simple: //www.vevb.com/softs/455885.html
El archivo descargado es: json_simple.jar
Ejemplo 1: Manera muy conveniente de usar JSONValue
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 hereda el mapa, mientras que JSONArray hereda la lista, por lo que puede usar la forma estándar de mapa y lista para usar JsonObject y JSonArray.
JSONValue puede usar matrices u objetos.
Ejemplo 2: Camino rápido, usando JsonParser
Jsonparser parser = new JsonParser (); System.out.println ("========================================================================================= Array = (JSONArray) obj; System.out.println ("===== Field /" 1 /"======================================; System.out.println (obj2.get (" 1 "); s =" {} "; obj = parser.parse (s); system.println (obj); S = "5,]";Usar JsonParser requiere la excepción de ser atrapado.
Ejemplo 3: Manejo de excepciones
String JSontext = "[[NULL, 123.45,/" A // tb C/"]}, verdadero"; Jsonparser parser = new JsonParser (); intente {parser.parse (jSontext); } Catch (ParseException PE) {System.out.println ("Position:" + PE.GetPosition ()); System.out.println (PE); }Resultados de la ejecución:
Posición: 25 Brace derecho de token inesperado (}) en la posición 25.
Ejemplo 4: Fábrica de contenedores
Use la clase ContenerFactory para crear una fábrica de contenedores.
String JSontext = "{/" First/": 123,/" Second/": [4, 5, 6],/" Third/": 789}"; Jsonparser parser = new JsonParser (); ContainerFactory ContainerFactory = new ContenerFactory () {Public List CreateArrayContainer () {return new LinkedList (); } mapa público createObjectContainer () {return new LinkedHashMap (); }}; intente {map json = (map) parser.parse (jSontext, ContainerFactory); Iterator iter = json.entryset (). Iterator (); System.out.println ("== iterate result =="); while (iter.hasnext ()) {map.entry entry = (map.entry) iter.next (); System.out.println (Entry.getKey () + "=>" + Entry.getValue ()); } System.out.println ("== tOjSonstring () =="); System.out.println (jsonValue.tojSonstring (JSON)); } catch (ParseException PE) {System.out.println (PE); }Los resultados son los siguientes:
== iterate result == primero => 123 segundo => [4,5,6] tercero => 789 == tojSonstring () == {"primero": 123, "segundo": [4,5,6], "tercero": 789} Si no usa fábricas de contenedores, Simple-Json usa JsonObject y JSONArray de forma predeterminada. Ejemplo 5: Procesamiento de contenido de saxo detenible SimpleJson recomienda un método simple de procesamiento de contenido saxo saxable para procesar los flujos de texto. El usuario puede permanecer en cualquier punto de la secuencia de entrada lógica, luego procesar otra lógica y luego continuar con el procesamiento anterior. No espere a que se procese toda la transmisión. Aquí hay un ejemplo. Keyfinder.java: La clase KeyFinder implementa ContentHandler {valor de objeto privado; booleano privado encontrado = falso; End booleano privado = falso; clave de cadena privada; Cadena privada MatchKey; public void setMatchKey (string matchKey) {this.matchkey = matchKey; } Public Object getValue () {Valor de retorno; } public boolean isend () {return final; } public void setFound (boolean encontrado) {this.found = encontrado; } public boolean isFound () {return encontrado; } public void startjson () lanza ParseException, ioException {encontrado = falso; end = falso; } public void endjson () lanza ParseException, ioException {end = true; } public boolean primitivo (valor de objeto) lanza ParseException, ioException {if (key! = null) {if (key.equals (matchKey)) {encontrado = true; this.Value = value; clave = nulo; devolver falso; }} return verdadero; } public boolean startArray () lanza ParseException, ioException {return true; } public boolean startObject () lanza ParseException, ioException {return true; } public boolean startObjectEntry (tecla de cadena) lanza ParseException, ioException {this.key = key; devolver verdadero; } public boolean EnDArray () lanza ParseException, ioException {return false; } public boolean endoBject () lanza ParseException, ioException {return true; } public boolean endoBjectentry () lanza ParseException, ioException {return true; }} Lógica principal: String JSontext = "{/" First/": 123,/" Second/": [{/" k1/": {/" id/":/" id1/"}}, 4, 5, 6, {/" id/": 123}],/" tercero/": 789,/" id/": null};; Jsonparser parser = newJsonParser (); KeyFinder Finder = NewKeyFinder (); Finder.setMatchKey ("id"); Pruebe {while (! Finder.Isend ()) {parser.parse (JSontext, Finder, True); if (finder.isFound ()) {Finder.SetFound (falso); System.out.println ("Idented encontrado:"); System.out.println (Finder.getValue ()); }}} Catch (ParseException PE) {PE.PrintStackTrace (); } Resultados de la ejecución:ID encontrado: ID1 ID encontrado: 123 ID encontrado: NULLEjemplo 6: El gráfico de objeto completo se analiza utilizando SAX-Like
Class Transformer implementa ContentHandler {Private Stack ValueStack; objeto público getResult () {if (valueSestack == null || valueSestack.size () == 0) return null; return valueStack.peek (); } public boolean EnDArray () lanza ParseException, ioException {TrackBack (); devolver verdadero; } public void endjson () lanza ParseException, ioexception {} public boolean endoBject () lanza ParseException, ioException {Trackback (); devolver verdadero; } public boolean endoBjectentry () lanza ParseException, ioException {Object Value = ValueSestack.Pop (); Clave de objeto = valueStack.pop (); Mapa matriz = (map) valueStack.peek (); parent.put (clave, valor); devolver verdadero; } private void trackback () {if (valueSestack.size ()> 1) {objeto valor = valueSestack.pop (); Objeto anterior = valueStack.peek (); if (anterior instanciaf string) {valueStack.push (valor); }}} private void consumoValue (valor de objeto) {if (valueSestack.size () == 0) valueSestack.push (valor); else {object prev = valueStack.peek (); if (anterior instancia de lista) {list array = (list) anterior; array.add (valor); } else {valueSestack.push (valor); }}} public boolean primitivo (valor de objeto) arroja ParseException, ioException {consuteValue (valor); devolver verdadero; } public boolean startArray () lanza ParseException, ioException {list array = new jsonArray (); consumo -valor (matriz); valueStack.push (matriz); devolver verdadero; } public void startjson () lanza ParseException, ioException {valueSestack = new stack (); } public boolean startObject () lanza ParseException, ioException {map object = new jsonObject (); consumoValue (objeto); valueStack.push (objeto); devolver verdadero; } public boolean startObjectentry (tecla de cadena) arroja ParseException, ioException {valueSestack.push (clave); devolver verdadero; }} Lógica del método principal:String jsonstring = <input json text>; Valor de objeto = nulo; Jsonparser parser = new JsonParser (); Transformer Transformer = new Transformer (); parser.parse (jsonstring, transformer); valor = transformer.getResult ();Resultados de la ejecución:
String jsonstring = <input json text>; Valor de objeto = nulo; Jsonparser parser = newJsonParser (); valor = parser.parse (jsonstring);Nota: JSONPAUSER no es seguro de hilo.
JSON_ENCODE - JSON Codificación de variables.
Descripción: cadena JSON_ENCODE ($ valor), devuelve el formulario JSON del valor de valor.
Parámetros: el valor a codificar puede ser cualquier tipo de datos, excepto el tipo de recurso
Esta función solo puede aceptar datos codificados UTF-8 (Nota de traducción: se refiere a datos del tipo de carácter/cadena)
Valor de retorno: si la codificación es exitosa, se devolverá una cadena representada en JSON.