Durante o processo de desenvolvimento, muitas vezes você precisa trocar dados com outros sistemas. Os formatos de troca de dados incluem XML, JSON, etc. JSON é um formato de dados leve que é mais eficiente que o XML. O XML requer muitas tags, que sem dúvida ocupa o tráfego de rede. JSON faz um bom trabalho nesse sentido. Vamos dar uma olhada no formato de JSON.
O JSON pode ter dois formatos, um é o formato de objeto e o outro é objeto de matriz.
{"Nome": "JSON", "Endereço": "Distrito de Xicheng, Pequim", "Age": 25} // String de formato de objeto de json
[{"Name": "JSON", "Endereço": "Distrito de Xicheng, Pequim", "Age": 25}] // Formato de Objeto de Dados
A partir dos dois formatos acima, podemos ver que a única diferença entre o formato do objeto e o formato do objeto da matriz é que [] é adicionado ao formato do objeto. Em seguida, olhe para a estrutura específica. Pode-se observar que ambos aparecem na forma de pares de valor-chave, separados por vírgulas (,) no estado inglês.
Esse formato também é muito popular quando a transmissão de dados é realizada no front-end e no back-end. O back-end retorna uma string no formato JSON. O front-end usa o método json.parse () em JS para analisar a sequência JSON em um objeto JSON e depois atravessar o front-end.
Vamos ao tópico e apresentar a conversão mútua entre os objetos JSON e Java em Java.
Para realizar a transferência mútua entre os objetos JSON e Java, você precisa usar um pacote JAR de terceiros. O pacote JSON-LIB é usado aqui. O endereço de download é: https://sourceforge.net/projects/json-lib/. O JSON-LIB requer o apoio de cinco pacotes: Commons-Beanutils-1.8.0.jar, Commons-Collections-3.2.1.jar, Commons-Lang-2.5.jar, Commons-Logging-1.1.jar e Ezmorph-1.0.6.Jar. Você pode baixá -lo da Internet sozinho. O endereço de download não será mais postado aqui.
O JSON-LIB fornece várias classes que podem concluir essa função, como JsonObject, JsonArray. A partir do nome da classe, podemos ver que o JsonObject Transformed deve estar em formato de objeto, enquanto o JSONArray transformado deve ser objetos de matriz (ou seja, com o formulário []).
1. A transferência mútua de objetos comuns java e strings json
Objeto Java-- 》》 String
Um objeto Java normal refere -se a um feijão java em Java, isto é, uma classe de entidade, como
package com.cn.study.day3;public class Student {//name private String name;//age private String age;//address private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return endereço;} public void setAddress (endereço da string) {this.address = endereço;}@substituir String tostring () {returnAcima está uma classe de entidade java normal, veja como o JSON-LIB o converte em uma forma de string,
public static void convertrobject () {Student stu = new Student (); stu.setName ("json"); stu.setage ("23"); stu.setAddress ("distrito de Xicheng de Pequim"); // 1. Use jsonObjectJsonObject json = jsonObject.FromObject (STU); // 2. Use JsonArrayjsonArray Array = jsonArray.FromObject (STU); String strjson = json.toString (); String Strarray = Array.toString (); System.out.println ("Strjson:"+strjson); System.out.println ("Saltay";Definei a aula de entidade de um aluno e depois a converti em Strings JSON usando JsonObject e JsonArray, respectivamente. Vamos ver o resultado impresso abaixo.
Strjson: {"endereço": "Distrito de Xicheng, Pequim", "Age": "23", "Nome": "JSON"}
Strarray: [{"endereço": "Distrito de Xicheng, Pequim", "Age": "23", "Nome": "JSON"}]
A partir dos resultados, podemos ver que ambos os métodos podem converter objetos Java em cordas JSON, mas a estrutura convertida é diferente.
JSON String-》》 Java Objeto
O acima explica como converter objetos Java em Strings JSON. Vamos ver como converter o formato da String JSON em objetos Java.
Primeiro, você precisa definir duas cordas em diferentes formatos, você precisa usar/escapar de cotações duplas.
public static void jSonstrtojava () {// Defina duas cordas de diferentes formatos string objectstr = "{/" name/":/" json/",/" Age/":/" 24/",/" Endereço/":/" Distrito de Xicheng, Pequim/"}"; Arraystr = "[{/" Nome/":/" JSON/",/" Age/":/" 24/",/" Endereço/":/" Distrito de Xicheng de Pequim, Pequim/"}]"; // 1. Use jsonObjectJsonObject jsonObject = jsonObject.FromObject (ObjectStr); Student Stu = (Student) jsonObject.tobean (JsonObject, Student.class); // 2. Use jsonArrayjsonArray jsonArray = jsonArray.FromObject (Arraystr); // Obtenha o primeiro elemento do objeto jsonArray o = jsonArray.get (0); JsonObject jsonObject2 = jsonObject.Fromobject (O); Student Stu2 = (Student) Student.class); System.out.println ("Stu:"+Stu); System.out.println ("Stu2:"+Stu2);}O resultado da impressão é:
Stu: Student [Nome = JSON, idade = 24, endereço = Distrito de Xicheng, Pequim]
STU2: estudante [nome = json, idade = 24, endereço = distrito de Xicheng, Pequim]
Como pode ser visto no código acima, o uso de JsonObject pode facilmente converter strings de formato JSON em objetos Java, mas o uso de JsonArray não é tão fácil, porque possui o símbolo "[]", então depois que obtemos o objeto JsonArray, pegamos o primeiro elemento, que é a deformação do aluno que precisamos e depois usamos o JSONOBJET para facilitar.
2. Transferência de listas e cordas JSON
Lista-》》 String json
public static void listtojson () {Student stu = new Student (); stu.setName ("json"); stu.setage ("23"); stu.setAddress ("Distrito de Beijing haidian"); list <Student> lists = new Arraylist <estudante> (); lists.add (stu); Use jsonObject // jsonObject listObject = jsonObject.FromObject (listas); // 2. Use jsonArrayjsonArray listArray = jsonArray.FromObject (lists); // System.out.println ("listObject:"+listObject.toString ()); System.out.println ("listArray:"+listArray.tostring ());}Eu usei o JsonObject para apostar. Vejamos os resultados antes do comentário.
Exceção no thread "Main" net.sf.json.jsonexception: 'objeto' é uma matriz. Use JsonArray em vez disso
Diga -me que há uma exceção. Ao verificar o código -fonte, descobri que, ao usar o método FromObject, primeiro julgarei o tipo de parâmetro. Aqui, eu nos digo que o parâmetro passado é um tipo de matriz porque o ArrayList é usado. Vejamos o resultado após o comentário.
ListArray: [{"endereço": "Distrito Haidiano, Pequim", "Age": "23", "Nome": "JSON"}]
Este resultado é normal.
String json-》》 Lista
A partir do exemplo acima, podemos ver que o objeto da lista só pode ser convertido no formato do objeto Array. Então, vamos olhar para a conversão da string para a lista abaixo.
public static void jSontolist () {String Arraystr = "[{/" name/":/" JSON/",/" Age/":/" 24/",/" endereço/":/" Pequim Xicheng District/"}]"; // Convert to listlist <Student> list2 = (list <rives>) Student.class); para (Student Stu: List2) {System.out.println (Stu);} // Converta para Arratar Student [] SS = (Student []) JsonArray.ToArray (JsonArray.FromObject (Arraystr), Student.class); para (estudante);Imprima o resultado,
Estudante [nome = json, idade = 24, endereço = distrito de Xicheng, Pequim]
Estudante [nome = json, idade = 24, endereço = distrito de Xicheng, Pequim]
Como o formato da string está no formato com "[]", o objeto JsonArray é selecionado aqui, que possui métodos de uso e tolos para uso. O primeiro é convertido em uma matriz em Java, ou em uma lista em Java. Como existe uma classe de entidade aqui para corresponder, o tipo de genérico (Student.class) é especificado ao usá -lo, para que o objeto convertido possa ser obtido.
3. O mapa e a conversão de string json
Mapa-》》 String json
public static void Maptojson () {Student Stu = new Student (); Stu.SetName ("JSON"); Stu.setage ("23"); Stu.setAddress ("Shanghai, China"); mapa <string, stu> map = new HashMap <String, Student> (); JsonObjectJsonObject MapObject = jsonObject.FromObject (map); system.out.println ("mapaBject"+mapoBject.toString ()); // 2. JsonArrayjsonArray MAPARRAY = JSONArray.FromObject (MAP); System.out.println ("MAPARRAY:"+MAPARRAY.tostring ());}Imprima o resultado,
MapObject {"First": {"endereço": "shanghai, China", "Age": "23", "Nome": "JSON"}}}
MAPARRAY: [{"First": {"endereço": "shanghai, China", "Age": "23", "Nome": "JSON"}}]
Dois formulários são impressos acima.
String json-》》 mapa
As cadeias JSON não podem ser convertidas diretamente em objetos de mapa. Para obter o valor correspondente às chaves nos mapas, outros métodos são necessários.
public static void jsonToMap(){String strObject="{/"first/":{/"address/":/"Shanghai, China/",/"age/":/"23/",/"name/":/"JSON/"}}";//JSONObjectJSONObject jsonObject=JSONObject.fromObject(strObject);Map map=new Hashmap (); map.put ("primeiro", Student.class); // O método do toBean é usado e três parâmetros são necessários para mybean my = (mybean) jsonObject.tobean (jsonObject, mybean.class, map); system.out.println (my.getfirst ());}Imprima o resultado,
Estudante [nome = json, idade = 23, endereço = Xangai, China]
Abaixo está o código do MyBean.
pacote com.cn.study.day4; importar java.util.map; importar com.cn.study.day3.student; public class mybean {private Student First; public student getfirst () {retorna primeiro;} public void setfirst (aluno primeiro) {this.first = primeiro;}}}Usando o método Tobean (), três parâmetros são passados, o primeiro é o objeto JsonObject, o segundo é MyBean.class e o terceiro é um objeto de mapa. Através do MyBean, podemos saber que deve haver um primeiro atributo nesta classe, e seu tipo é o aluno, que corresponde aos tipos de chave e valor no mapa, ou seja, o tipo do valor correspondente ao primeiro tipo de chave.
O exposto acima é uma explicação detalhada dos exemplos de conversão mútuos de strings JSON e objetos Java apresentados a você pelo editor. Espero que seja útil para você!