首页 > 编程 > Java > 正文

实例解析Java的Jackson库中的数据绑定

2019-11-26 14:41:05
字体:
来源:转载
供稿:网友

数据绑定API用于JSON转换和使用属性访问或使用注解POJO(普通Java对象)。以下是它的两个类型。

简单数据绑定 - 转换JSON,从Java Maps, Lists, Strings, Numbers, Booleans 和 null 对象。

完整数据绑定 - 转换JSON到任何JAVA类型。我们将在下一章分别绑定。

ObjectMapper读/写JSON两种类型的数据绑定。数据绑定是最方便的方式是类似XML的JAXB解析器。

简单的数据绑定
简单的数据绑定是指JSON映射到Java核心数据类型。下表列出了JSON类型和Java类型之间的关系。

2016113113244100.png (629×269)

让我们来看看简单的数据操作绑定。在这里,我们将映射JAVA基本类型直接JSON,反之亦然。

创建一个名为JacksonTester在Java类文件在目录 C:/>Jackson_WORKSPACE.

File: JacksonTester.java

import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.codehaus.jackson.JsonGenerationException;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;public class JacksonTester {  public static void main(String args[]){   JacksonTester tester = new JacksonTester();     try {      ObjectMapper mapper = new ObjectMapper();      Map<String,Object> studentDataMap = new HashMap<String,Object>();       int[] marks = {1,2,3};      Student student = new Student();      student.setAge(10);      student.setName("Mahesh");      // JAVA Object      studentDataMap.put("student", student);      // JAVA String      studentDataMap.put("name", "Mahesh Kumar");         // JAVA Boolean      studentDataMap.put("verified", Boolean.FALSE);      // Array      studentDataMap.put("marks", marks);      mapper.writeValue(new File("student.json"), studentDataMap);      //result student.json  //{       //  "student":{"name":"Mahesh","age":10},      //  "marks":[1,2,3],      //  "verified":false,      //  "name":"Mahesh Kumar"      //}      studentDataMap = mapper.readValue(new File("student.json"), Map.class);      System.out.println(studentDataMap.get("student"));      System.out.println(studentDataMap.get("name"));      System.out.println(studentDataMap.get("verified"));      System.out.println(studentDataMap.get("marks"));   } catch (JsonParseException e) {     e.printStackTrace();   } catch (JsonMappingException e) {     e.printStackTrace();   } catch (IOException e) {      e.printStackTrace();   }  }}class Student {  private String name;  private int age;  public Student(){}  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getAge() {   return age;  }  public void setAge(int age) {   this.age = age;  }  public String toString(){   return "Student [ name: "+name+", age: "+ age+ " ]";  } }

验证结果

使用javac编译如下类:

复制代码 代码如下:

C:/Jackson_WORKSPACE>javac JacksonTester.java

现在运行jacksonTester看到的结果:
复制代码 代码如下:

C:/Jackson_WORKSPACE>java JacksonTester

验证输出结果

{name=Mahesh, age=10}Mahesh Kumarfalse[1, 2, 3]

全数据绑定
完全数据绑定是指JSON映射到任何Java对象。

//Create an ObjectMapper instanceObjectMapper mapper = new ObjectMapper(); //map JSON content to Student objectStudent student = mapper.readValue(new File("student.json"), Student.class);//map Student object to JSON contentmapper.writeValue(new File("student.json"), student);

让我们来看看简单的数据操作绑定。在这里,我们将直接映射Java对象到JSON,反之亦然。

创建一个名为JacksonTester在Java类文件目录 C:/>Jackson_WORKSPACE.

File: JacksonTester.java

import java.io.File;import java.io.IOException;import org.codehaus.jackson.JsonGenerationException;import org.codehaus.jackson.JsonParseException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;public class JacksonTester {  public static void main(String args[]){   JacksonTester tester = new JacksonTester();   try {     Student student = new Student();     student.setAge(10);     student.setName("Mahesh");     tester.writeJSON(student);     Student student1 = tester.readJSON();     System.out.println(student1);   } catch (JsonParseException e) {     e.printStackTrace();   } catch (JsonMappingException e) {     e.printStackTrace();   } catch (IOException e) {     e.printStackTrace();   }  }  private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{   ObjectMapper mapper = new ObjectMapper();    mapper.writeValue(new File("student.json"), student);  }  private Student readJSON() throws JsonParseException, JsonMappingException, IOException{   ObjectMapper mapper = new ObjectMapper();   Student student = mapper.readValue(new File("student.json"), Student.class);   return student;  }}class Student {  private String name;  private int age;  public Student(){}  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getAge() {   return age;  }  public void setAge(int age) {   this.age = age;  }  public String toString(){   return "Student [ name: "+name+", age: "+ age+ " ]";  } }

验证结果

使用javac编译如下类:

复制代码 代码如下:

C:/Jackson_WORKSPACE>javac JacksonTester.java

现在运行jacksonTester看到的结果:
复制代码 代码如下:

C:/Jackson_WORKSPACE>java JacksonTester

验证输出
复制代码 代码如下:

Student [ name: Mahesh, age: 10 ]

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表