A API de ligação de dados é usada para conversão e acesso a JSON usando atributos ou usando POJO de anotação (objeto Java normal). Aqui estão dois tipos disso.
Ligação de dados simples - converta JSON de mapas, listas, strings, números, booleanos e objetos nulos.
Ligação completa dos dados - converta JSON em qualquer tipo Java. Vamos nos ligar separadamente no próximo capítulo.
O ObjectMapper lê/grava JSON dois tipos de ligação de dados. A maneira mais conveniente da ligação de dados é ao analisador JAXB do tipo XML.
Ligação de dados simples
A ligação simples de dados refere -se ao mapeamento JSON para os tipos de dados principais Java. A tabela a seguir lista a relação entre o tipo JSON e o tipo java.
Vamos dar uma olhada na ligação simples de manipulação de dados. Aqui, mapearemos os tipos primitivos Java diretamente JSON e vice -versa.
Crie um arquivo de classe Java chamado JackSontester no diretório C:/> Jackson_workspace.
Arquivo: Jacksontester.java
importar java.io.file; importar java.io.ioException; importar java.util.hashmap; importar java.util.map; importar org.codehaus.jackson.jsongeneationException; imporhaus org.codehaus.jackson.jackson.jsonparsexception; import oug.codehaus; org.codehaus.jackson.map.objectmapper; public class Jacksontester {public static void main (string args []) {Jacksontester tester = new JackSontester (); tente {objectMapper mapper = new objectMapper (); Mapa <string, object> studentDatamap = new hashmap <string, object> (); int [] marks = {1,2,3}; Estudante estudante = novo aluno (); Student.setage (10); estudante.setName ("mahesh"); // java objeto studentDatamap.put ("estudante", aluno); // java string studentDatamap.put ("nome", "mahesh kumar"); // java boolean studentDatamap.put ("verificado", boolean.false); // Array StudentDatamap.put ("Marks", Marks); Mapper.WriteValue (novo arquivo ("Student.json"), StudentDatamap); // Result Student.json // {// "Student": {"Name": "Mahesh", "Age": 10}, // "Marks": [1,2,3], // "verificado": false, // "nome": "mahesh kumar" //} studentDatamap = mapper.apPervalue (new File (File "; System.out.println (StudentDatamap.get ("Student")); System.out.println (StudentDatamap.get ("Nome")); System.out.println (StudentDatamap.get ("Verificado")); System.out.println (StudentDatamap.get ("Marks")); } catch (jsonparseException e) {e.printStackTrace (); } catch (jsonMappingException e) {E.printStackTrace (); } catch (ioexception e) {e.printStackTrace (); }}} classe Student {private String Name; private Int Age; public Student () {} public String getName () {Nome de retorno; } public void setName (nome da string) {this.name = name; } public int getage () {Age de retorno; } public void setage (int Age) {this.age = Age; } public string tostring () {return "Student [nome:"+ nome+ ", idade:"+ idade+ "]"; }}Resultados da verificação
Use Javac para compilar a seguinte classe:
A cópia do código é a seguinte:
C:/Jackson_workspace> javac jacksontester.java
Agora execute Jacksontoster para ver o resultado:
A cópia do código é a seguinte:
C:/Jackson_workspace> Java Jacksontester
Verifique o resultado da saída
{nome = mahesh, idade = 10} Mahesh Kumarfalse [1, 2, 3] Ligação de dados completos
A ligação completa dos dados refere -se ao mapeamento JSON para qualquer objeto Java.
// Crie um objectMapper InstanceObjectMapper Mapper = new ObjectMapper (); // mapeia o conteúdo json para estudante objectstudent student = mapper.readValue (new File ("student.json"), student.class); // mapear o objeto do aluno para json contentmapper.writeValue (new File ("student.json"), aluno);Vamos dar uma olhada na ligação simples de manipulação de dados. Aqui, mapearemos objetos Java diretamente para JSON e vice -versa.
Crie um diretório chamado JackSontester no arquivo Java Class C:/> Jackson_workspace.
Arquivo: Jacksontester.java
importar java.io.file; importar java.io.ioException; importar org.codehaus.jackson.jsongenorationException; importar org.codehaus.jackson.jsonparseexception; importematsratsort.codehaus.jackson.map.jsonMapseption; importepsepth; args []) {Jacksontester tester = new JackSontester (); tente {estudante estudante = novo aluno (); Student.setage (10); estudante.setName ("mahesh"); tester.writejson (estudante); Aluno aluno1 = tester.readjson (); System.out.println (Student1); } catch (jsonparseException e) {e.printStackTrace (); } catch (jsonMappingException e) {E.printStackTrace (); } catch (ioexception e) {e.printStackTrace (); }} private void writejson (aluno) lança JSongEneraçãoException, JSONMAPPINGEXCECTION, IOException {ObjectMapper mapper = new ObjecjotMapper (); Mapper.WriteValue (novo arquivo ("Student.json"), aluno); } estudante privado readjson () lança jsonparseexception, jsonmappingException, ioexception {objectmapper mapper = new objectMapper (); Estudante estudante = mapper.readValue (novo arquivo ("student.json"), student.class); aluno de retorno; }} classe Student {private String Name; private Int Age; public Student () {} public String getName () {Nome de retorno; } public void setName (nome da string) {this.name = name; } public int getage () {Age de retorno; } public void setage (int Age) {this.age = Age; } public string tostring () {return "Student [nome:"+ nome+ ", idade:"+ idade+ "]"; }}Resultados da verificação
Use Javac para compilar a seguinte classe:
A cópia do código é a seguinte:
C:/Jackson_workspace> javac jacksontester.java
Agora execute Jacksontoster para ver o resultado:
A cópia do código é a seguinte:
C:/Jackson_workspace> Java Jacksontester
Verifique se o código de cópia é copiado da seguinte forma:
Aluno [Nome: Mahesh, idade: 10]