程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 實例解析Java的Jackson庫中的數據綁定

實例解析Java的Jackson庫中的數據綁定

編輯:關於JAVA

實例解析Java的Jackson庫中的數據綁定。本站提示廣大學習愛好者:(實例解析Java的Jackson庫中的數據綁定)文章只能為提供參考,不一定能成為您想要的結果。以下是實例解析Java的Jackson庫中的數據綁定正文


數據綁定API用於JSON轉換和應用屬性拜訪或應用注解POJO(通俗Java對象)。以下是它的兩個類型。

簡略數據綁定 - 轉換JSON,從Java Maps, Lists, Strings, Numbers, Booleans 和 null 對象。

完全數據綁定 - 轉換JSON就任何JAVA類型。我們將鄙人一章分離綁定。

ObjectMapper讀/寫JSON兩品種型的數據綁定。數據綁定是最便利的方法是相似XML的JAXB解析器。

簡略的數據綁定
簡略的數據綁定是指JSON映照到Java焦點數據類型。下表列出了JSON類型和Java類型之間的關系。

讓我們來看看簡略的數據操作綁定。在這裡,我們將映照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 Kumar
false
[1, 2, 3]

全數據綁定
完整數據綁定是指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編譯以下類:

C:\Jackson_WORKSPACE>javac JacksonTester.java

如今運轉jacksonTester看到的成果:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸入

Student [ name: Mahesh, age: 10 ]

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved