O Simple JSON é uma estrutura de análise Java JSON desenvolvida pelo Google, com base no protocolo Apache.
Página inicial do json-simple: //www.vevb.com/softs/455885.html
O arquivo baixado é: json_simple.jar
Exemplo 1: maneira muito conveniente de usar o JSONVALUE
System.out.println ("==========================================; String S =" [0, {/"1/": {/"2/": {/"3/": {/"4/": [5, {/"2/": {/"3/": {/"4/": obj = JSONVELE.PARSE (S); obj2 = (JsonObject) Array.get (1); s = "{}";O JsonObject herda o mapa, enquanto a lista JsonArray herda, para que você possa usar a maneira padrão de mapa e listar para usar o JsonObject e o JsonArray.
O JSONVALUE pode usar matrizes ou objetos.
Exemplo 2: Way Quick, usando o JSONPARSER
JSONPARSER Parser = new JSONPARSER (); System.out.println ("================================================================================================er. Array = (JsonArray) obj; System.out.println ("===== Campo /" 1 /"====================================; System.out.println (obj2.get (" 1 "); S =" {} "; s = "[5,]";O uso do JSONPARSER exige que a exceção seja capturada.
Exemplo 3: Manipulação de exceções
String jSontext = "[[null, 123.45,/" a // tb c/"]}, true"; JSONPARSER Parser = new JSONPARSER (); tente {parser.parse (JSontext); } catch (parseException pe) {System.out.println ("Position:" + pe.getPosition ()); System.out.println (PE); }Resultados da execução:
Posição: 25 Belinha à direita inesperada (}) na posição 25.
Exemplo 4: Fábrica de contêineres
Use a classe ContainerFactory para criar uma fábrica de contêineres.
String jSontext = "{/" Primeiro/": 123,/" Second/": [4, 5, 6],/" Terceiro/": 789}"; JSONPARSER Parser = new JSONPARSER (); ContainerFactory containerFactory = new ContainerFactory () {public List CreativeRrayContainer () {return new LinkedList (); } mapa público createObjectContainer () {return new LinkedHashMap (); }}; tente {map json = (map) parser.parse (JSontext, containerFactory); Iterator iter = json.entrySet (). Iterator (); System.out.println ("== itereate resultado =="); while (iter.hasNext ()) {map.entry Entry = (map.entry) iter.Next (); System.out.println (entradas.getKey () + "=>" + entradas.getValue ()); } System.out.println ("== TojSonstring () =="); System.out.println (jsonvalue.tojSonstring (json)); } catch (parseException pe) {System.out.println (PE); }Os resultados são os seguintes:
== Resultado itera == primeiro => 123 Segundo => [4,5,6] Terceiro => 789 == TOJSONSOTRING () == {"First": 123, "Second": [4,5,6], "Terceiro": 789} Se você não usa fábricas de contêineres, o Simple-Json usa o JsonObject e o JsonArray por padrão. Exemplo 5: Processamento de conteúdo Sax Stopable Simplejson recomenda um método simples de processamento de conteúdo sax parado para processar fluxos de texto. O usuário pode permanecer em qualquer ponto do fluxo de entrada lógico, depois processar outra lógica e continuar com o processamento anterior. Não espere que todo o fluxo seja processado. Aqui está um exemplo. Keyfinder.java: classe Keyfinder implementa contentHandler {Valor do objeto privado; Privado booleano encontrado = false; PRIVADO BOOLEAN END = FALSE; chave de string privada; MatchKey de String Private; public void setMatchKey (String MatchKey) {this.matchkey = matchaKey; } public object getValue () {return value; } public boolean isend () {return end; } public void setFound (boolean encontrado) {this.found = encontrado; } public boolean isfound () {return encontrado; } public void startjson () lança parseexception, ioexception {found = false; end = false; } public void endjson () lança parseexception, ioexception {end = true; } Public Primitive (valor do objeto) public booleano lança parseexception, ioexception {if (key! = null) {if (key.equals (matchKey)) {found = true; this.value = value; chave = nulo; retornar falso; }} retornar true; } public boolean startArray () lança parseexception, ioexception {return true; } public boolean startObject () lança parseexception, ioexception {return true; } public boolean startObjectEntry (chave de string) lança parseexception, ioexception {this.key = key; retornar true; } public boolean Enderray () lança parseException, ioexception {return false; } public boolean endoBject () lança parseexception, ioexception {return true; } public boolean endoBjectEntry () lança parseexception, ioexception {return true; }} Lógica principal: String jSontext = "{/" primeiro/": 123,/" Second/": [{/" k1/": {/" id/":/" id1/"}}, 4, 5, 6, {/" id/": 123}],/" terceiro/": 789,/" id/": null};"; JSONPARSER Parser = newjsonParser (); Keyfinder Finder = newKeyFinder (); Finder.setMatchKey ("ID"); tente {while (! Finder.isend ()) {parser.parse (jsonText, Finder, true); if (finder.isfound ()) {finder.setFound (false); System.out.println ("encontrado id:"); System.out.println (finder.getValue ()); }}} catch (parseException pe) {pe.printStackTrace (); } Resultados da execução:ID da ID: ID1 encontrado ID: 123 Encontrado ID: NULLExemplo 6: o gráfico de objeto inteiro é analisado usando sax como sax
classe Transformer implementa o contentHandler {private Stack Valuestack; public Object getResult () {if (valuestack == null || valuestack.size () == 0) return null; retornar valuestack.peek (); } public boolean Enderray () lança parseexception, ioexception {rastretback (); retornar true; } public void endjson () lança parseexception, ioexception {} public boolean endoBject () lança parseexception, ioexception {rastretback (); retornar true; } public boolean endoBjectEntry () lança parseexception, ioexception {objeto value = valuestack.pop (); Chave de objeto = valuestack.pop (); Mapa pai = (mapa) valuestack.peek (); parent.put (chave, valor); retornar true; } private void trackback () {if (valuestack.size ()> 1) {Valor do objeto = valuestack.pop (); Objeto prev = valuestack.peek (); if (prevaseof string) {valuestack.push (valor); }}} private void consumpingValue (valor do objeto) {if (valuestack.size () == 0) valuestack.push (value); else {objeto prev = valuestack.peek (); if (preventyof list) {list Array = (list) prev; Array.add (valor); } else {valuestack.push (valor); }}} Primitiva booleana pública (valor do objeto) lança parseexception, ioexception {ConsumpingValue (valor); retornar true; } public boolean startArray () lança parseexception, ioexception {list Array = new jsonArray (); consumoValue (matriz); valuestack.push (matriz); retornar true; } public void startjson () lança parseexception, ioexception {valuestack = new Stack (); } public boolean startObject () lança parseexception, ioexception {map object = new jsonObject (); consumevalue (objeto); valuestack.push (objeto); retornar true; } public boolean startObjectEntry (chave de string) lança parseexception, ioexception {valuestack.push (key); retornar true; }} Lógica principal do método:String jSonstring = <Entrada JSON Text>; Valor do objeto = nulo; JSONPARSER Parser = new JSONPARSER (); Transformador transformador = new Transformer (); parser.parse (JSonstring, Transformer); valor = transformador.getResult ();Resultados da execução:
String jSonstring = <Entrada JSON Text>; Valor do objeto = nulo; JSONPARSER Parser = newjsonParser (); valor = parser.parse (jSonstring);NOTA: O JSONPAUSER não é seguro para threads.
JSON_ENCODE - codificação de variáveis JSON.
Descrição: String json_encode ($ valor), retorna o formulário JSON do valor do valor.
Parâmetros: o valor a ser codificado pode ser qualquer tipo de dados, exceto para o tipo de recurso
Esta função pode aceitar apenas dados codificados UTF-8 (tradução Nota: refere-se a dados do tipo de caractere/string)
Valor de retorno: se a codificação for bem -sucedida, uma sequência representada no JSON será devolvida.