源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-01-04 08:01 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:实例解析Java的Jackson库中的数据绑定
数据绑定API用于JSON转换和使用属性访问或使用注解POJO(普通Java对象)。以下是它的两个类型。 简单数据绑定 - 转换JSON,从Java Maps, Lists, Strings, Numbers, Booleans 和 null 对象。 完整数据绑定 - 转换JSON到任何JAVA类型。我们将在下一章分别绑定。 ObjectMapper读/写JSON两种类型的数据绑定。数据绑定是最方便的方式是类似XML的JAXB解析器。 [b]简单的数据绑定 [/b]简单的数据绑定是指JSON映射到Java核心数据类型。下表列出了JSON类型和Java类型之间的关系。 [img]http://files.jb51.net/file_images/article/201601/2016113113244100.png?2016013113256[/img] 让我们来看看简单的数据操作绑定。在这里,我们将映射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编译如下类:
[u]复制代码[/u] 代码如下:
C:\Jackson_WORKSPACE>javac JacksonTester.java
现在运行jacksonTester看到的结果:
[u]复制代码[/u] 代码如下:
C:\Jackson_WORKSPACE>java JacksonTester
验证输出结果
{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]

[b]全数据绑定 [/b]完全数据绑定是指JSON映射到任何Java对象。
//Create an ObjectMapper instance
ObjectMapper mapper = new ObjectMapper(); 
//map JSON content to Student object
Student student = mapper.readValue(new File("student.json"), Student.class);
//map Student object to JSON content
mapper.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编译如下类:
[u]复制代码[/u] 代码如下:
C:\Jackson_WORKSPACE>javac JacksonTester.java
现在运行jacksonTester看到的结果:
[u]复制代码[/u] 代码如下:
C:\Jackson_WORKSPACE>java JacksonTester
验证输出
[u]复制代码[/u] 代码如下:
Student [ name: Mahesh, age: 10 ]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部