Boon - 快速指南



Boon - 概述

Boon 是一個基於 Java 的簡單 JSON 工具包。您可以使用 Boon JSON 以高效且快速的方式對 JSON 資料進行編碼或解碼。

Boon 的特性

Boon 的特性如下所述:

  • 快速 - Boon JSON 在物件序列化方面比 Jackson 更快,能夠實現 JSON 表示式和 JSON 解析。

  • 輕量級 - 它只有很少的類,並提供必要的編碼/解碼物件對映功能。

  • 資料繫結 - 大多數操作都是使用資料繫結和索引覆蓋完成的。

  • 沒有公共樹模型 - 終端使用者檢視是資料繫結檢視。

  • 支援簡單的資料繫結 - 提供與基本型別以及自動裝箱型別的資料繫結。

  • 高效能 - 使用基於堆的解析器,提供高效能。

  • 無依賴 - 沒有外部庫依賴。可以獨立包含。

  • JDK1.2 相容 - 原始碼和二進位制檔案都與 JDK1.2 相容

Boon - 環境設定

在本章中,我們將學習 Boon 的本地環境設定以及如何為 Windows 2000/XP、Windows 95/98/ME 等設定 Boon 的路徑。我們還將瞭解一些流行的 Java 編輯器以及如何下載 Boon 歸檔檔案。

本地環境設定

如果您仍然希望為 Java 程式語言設定您的環境,那麼本章將指導您如何在您的機器上下載和安裝 Java。請按照下面提到的步驟設定環境。

Java SE 可以從以下連結免費獲取 www.oracle.com/java/technologies/oracle-java-archive-downloads.html。因此,您可以根據您的作業系統下載一個版本。

按照說明下載 Java 並執行 .exe 檔案以在您的機器上安裝 Java。在您的機器上安裝 Java 後,您需要設定環境變數以指向正確的安裝目錄:

Windows 2000/XP 的路徑

我們假設您已將 Java 安裝在 c:\Program Files\java\jdk 目錄下:

  • 右鍵單擊 '我的電腦' 並選擇 '屬性'

  • '高階' 選項卡下單擊 '環境變數' 按鈕。

  • 現在,修改 'Path' 變數,使其還包含 Java 可執行檔案的路徑。例如,如果路徑當前設定為 'C:\WINDOWS\SYSTEM32',則將您的路徑更改為 'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'

Windows 95/98/ME 的路徑

我們假設您已將 Java 安裝在 c:\Program Files\java\jdk 目錄下:

  • 編輯 'C:\autoexec.bat' 檔案並在末尾新增以下行:'SET PATH=%PATH%;C:\Program Files\java\jdk\bin'

Linux、UNIX、Solaris、FreeBSD 的路徑

環境變數 PATH 應設定為指向 Java 二進位制檔案已安裝的位置。如果您在執行此操作時遇到問題,請參閱您的 shell 文件。

例如,如果您使用 bash 作為您的 shell,則您將在 '.bashrc' 檔案的末尾新增以下行:export PATH=/path/to/java:$PATH'

流行的 Java 編輯器

要編寫您的 Java 程式,您需要一個文字編輯器。市場上有許多複雜的 IDE 可供使用。但就目前而言,您可以考慮以下其中之一:

  • 記事本 - 在 Windows 機器上,您可以使用任何簡單的文字編輯器,如記事本(本教程推薦使用)、TextPad。

  • Netbeans - 它是一個開源且免費的 Java IDE,可以從 www.netbeans.org/index.html 下載。

  • Eclipse - 它也是一個由 Eclipse 開源社群開發的 Java IDE,可以從 www.eclipse.org 下載。

下載 Boon 歸檔檔案

Maven 倉庫 - Boon 下載 Boon jar 檔案的最新版本。該版本位於 https://mvnrepository.com/artifact/io.fastjson/boon。在本教程中,下載了 boon-0.34.jar 並將其複製到 C:\> boon 資料夾中。

作業系統 歸檔檔名
Windows boon-0.34.jar
Linux boon-0.34.jar
Mac boon-0.34.jar

設定 Boon 環境

設定 BOON 環境變數以指向 Boon jar 儲存在您的機器上的基本目錄位置。假設,我們已將 boon-0.34.jar 解壓縮到各個作業系統的 Boon 資料夾中,如下所示。

作業系統 輸出
Windows 將環境變數 BOON 設定為 C:\Boon
Linux export BOON=/usr/local/Boon
Mac export BOON=/Library/Boon

設定 CLASSPATH 變數

設定 CLASSPATH 環境變數以指向 Boon jar 的位置。假設,您已將 boon-0.34.jar 儲存在各個作業系統的 Boon 資料夾中,如下所示。

作業系統 輸出
Windows 將環境變數 CLASSPATH 設定為 %CLASSPATH%;%Boon%\boon-0.34.jar;.;
Linux export CLASSPATH=$CLASSPATH:$BOON/boon-0.34.jar:.
Mac export CLASSPATH=$CLASSPATH:$BOON/boon-0.34.jar:.

Boon - 轉為物件

ObjectMapper 是 Boon 庫的主要參與者類。ObjectMapper 類提供讀取和寫入 JSON 的功能,可以從基本 POJO(普通舊 Java 物件)或通用 JSON 樹模型 (JsonNode) 讀取和寫入 JSON,以及執行轉換的相關功能。

它還具有高度可定製性,可以與不同風格的 JSON 內容一起使用,並支援更高階的物件概念,例如多型性和物件標識。

示例

以下示例使用 ObjectMapper 類將 JSON 字串解析為 Student 物件。

import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]){
      ObjectMapper mapper = JsonFactory.create();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";

      Student student = mapper.readValue(jsonString, Student.class);
      System.out.println(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+ " ]";
   }
}

輸出

輸出如下所示:

Student [ name: Mahesh, age: 21 ]

Boon - 轉為 Map

ObjectMapper 類還可以用於將 json 解析為 Map 物件而不是 POJO 物件。

示例

以下示例使用 ObjectMapper 類將 JSON 字串解析為 Map 物件。

import java.util.Map;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]) {
      ObjectMapper mapper = JsonFactory.create();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
      Map studentMap = mapper.readValue(jsonString, Map.class);
      System.out.println("Name: " + studentMap.get("name"));
      System.out.println("Age: " + studentMap.get("age"));
   }
}

輸出

輸出如下所示:

Name: Mahesh
Age: 21

Boon - 原始碼

ObjectMapper 類可以用於從不同的來源解析 json。它可以使用以下來源解析 JSON。

  • 位元組陣列

  • 字元陣列

  • 檔案

  • Reader 類

  • InputStream 類

  • 字串

示例

以下示例使用 ObjectMapper 類將 JSON 字元陣列解析為 Map 物件。

import java.util.Map;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]){
      ObjectMapper mapper = JsonFactory.create();
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
      char[] jsonCharAray = jsonString.toCharArray();
      Map studentMap = mapper.readValue(jsonCharAray, Map.class);
      System.out.println("Name: " + studentMap.get("name"));
      System.out.println("Age: " + studentMap.get("age"));
   }
}

輸出

您將看到以下輸出:

Name: Mahesh
Age: 21

Boon - 從物件生成

ObjectMapper 類可以用於從物件生成 json 字串。

示例

以下示例使用 ObjectMapper 類從 Student 物件生成 JSON 字串。

import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]){
      ObjectMapper mapper = JsonFactory.create();      
      Student student = new Student("Mahesh", 21);
      String jsonString = mapper.writeValueAsString(student);
      System.out.println(jsonString);
   }
}
class Student {
   public String name;
   public int age;
   public Student(String name, int age) {
      this.name = name;
      this.age = age;
   }
}

輸出

這將產生以下輸出:

{"name":"Mahesh","age":21}

Boon - 從 Map 生成

ObjectMapper 類可以用於從 Map 生成 json 字串。

示例

以下示例使用 ObjectMapper 類從 Map 物件生成 JSON 字串。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]){
      ObjectMapper mapper = JsonFactory.create();      
      Map<String, String> student = new HashMap<>();
      student.put("Name", "Mahesh");
      student.put("RollNo", "21");
      
      Map<String, String> student1 = new HashMap<>();
      student1.put("Name", "Suresh");
      student1.put("RollNo", "22");
      
      List<Map<String,String>> studentList = new ArrayList<>();
      studentList.add(student);
      studentList.add(student1);
      
      Map<String, List> studentMap = new HashMap<String, List>();
      studentMap.put("students", studentList);
      
      String jsonString = mapper.writeValueAsString(studentMap);
      System.out.println(jsonString);
   }
}

輸出

執行上述程式碼時,您應該會看到以下輸出:

{"students":[{"RollNo":"21","Name":"Mahesh"},{"RollNo":"22","Name":"Suresh"}]}

Boon - 長整型轉日期

ObjectMapper 類可以用於處理 JSON 中的不同日期格式。它可以用於解析/生成日期的長整型版本。

示例

以下示例使用 ObjectMapper 類從長整型版本生成日期字串。

import java.util.Date;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]) {
      ObjectMapper mapper = JsonFactory.create();      
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21, \"dateOfBirth\":976559400000}";
      
      //mapper converts long to date automatically
      Student student = mapper.readValue(jsonString, Student.class);
      System.out.println(student.dateOfBirth);    
      
      //by default mapper converts date to long
      jsonString = mapper.writeValueAsString(student);
      System.out.println(jsonString);    
   }
}
class Student {
   public String name;
   public int age;
   public Date dateOfBirth;
   
   public Student(String name, int age, Date dateOfBirth) {
      this.name = name;
      this.age = age;
      this.dateOfBirth = dateOfBirth;
   }
}

輸出

以下是程式碼的輸出:

Tue Dec 12 00:00:00 IST 2000
{"name":"Mahesh","age":21,"dateOfBirth":976559400000}

Boon - 字串轉日期

ObjectMapper 類可以用於處理 JSON 中的不同日期格式。它可以用於解析/生成日期的字串版本。

示例

以下示例使用 ObjectMapper 類從字串版本生成日期字串。

import java.util.Date;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]) {
      ObjectMapper mapper = JsonFactory.create();      
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21, \"dateOfBirth\":\"1998-08-11T11:31:00.034Z\" }";
      
      // mapper converts String to date automatically
      Student student = mapper.readValue(jsonString, Student.class);
      System.out.println(student.dateOfBirth);    
      
      // by default mapper converts date to long
      jsonString = mapper.writeValueAsString(student);
      System.out.println(jsonString);    
   }
}
class Student {
   public String name;
   public int age;
   public Date dateOfBirth;
   
   public Student(String name, int age, Date dateOfBirth) {
      this.name = name;
      this.age = age;
      this.dateOfBirth = dateOfBirth;
   }
}

輸出

執行上述程式碼時,您應該會看到以下輸出:

Tue Aug 11 17:01:00 IST 1998
{"name":"Mahesh","age":21,"dateOfBirth":902835060034}

Boon - 生成日期

ObjectMapper 類可以用於處理 JSON 中的不同日期格式。它也可以用於生成日期物件。預設情況下,ObjectMapper 以長整型毫秒版本生成日期。使用 JsonFactory.createUseJSONDates() 方法返回的 ObjectMapper,我們可以在解析期間獲取日期的字串版本。

示例

以下示例使用 ObjectMapper 類透過解析 JSON 生成日期字串。

import java.util.Date;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;

public class BoonTester {
   public static void main(String args[]) {
      ObjectMapper mapper = JsonFactory.createUseJSONDates();     
      String jsonString = "{\"name\":\"Mahesh\", \"age\":21, \"dateOfBirth\":\"1998-08-11T11:31:00.034Z\" }";
      
      //mapper converts String to date automatically
      Student student = mapper.readValue(jsonString, Student.class);
      System.out.println(student.dateOfBirth);    
      
      //Mapper converts date to date string now
      jsonString = mapper.writeValueAsString(student);
      System.out.println(jsonString);    
   }
}
class Student {
   public String name;
   public int age;
   public Date dateOfBirth;
   public Student(String name, int age, Date dateOfBirth) {
      this.name = name;
      this.age = age;
      this.dateOfBirth = dateOfBirth;
   }
}

輸出

您將收到以下輸出:

Tue Aug 11 17:01:00 IST 1998
{"name":"Mahesh","age":21,"dateOfBirth":"1998-08-11T11:31:00.034Z"}

Boon - @JsonIgnore

@JsonIgnore 用於欄位級別,用於標記要忽略的屬性或屬性列表。

示例 - @JsonIgnore

以下示例用於 @JsonIgnore:

import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;
import org.boon.json.annotations.JsonIgnore;

public class BoonTester {
   public static void main(String args[]) {
      ObjectMapper mapper = JsonFactory.create();      
      Student student = new Student(1,11,"1ab","Mark");  
      String jsonString = mapper.writeValueAsString(student);
      System.out.println(jsonString);    
   }
}
class Student {
   public int id;
   @JsonIgnore
   public String systemId;
   public int rollNo;
   public String name;

   Student(int id, int rollNo, String systemId, String name) {
      this.id = id;
      this.systemId = systemId;
      this.rollNo = rollNo;
      this.name = name;
   }
}

輸出

您將看到以下輸出:

{"id":1,"rollNo":11,"name":"Mark"}

Boon - @JsonInclude

@JsonInclude 用於包含具有 null/空或預設值的屬性。預設情況下,Boon 在序列化/反序列化期間會忽略此類屬性。

示例 - @JsonInclude

以下示例用於 @JsonInclude:

import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;
import org.boon.json.annotations.JsonInclude;

public class BoonTester {
   public static void main(String args[]) {
      ObjectMapper mapper = JsonFactory.createUseAnnotations( true );     
      Student student = new Student(1,null);  
      String jsonString = mapper.writeValueAsString(student);
      System.out.println(jsonString);    
   }
}
class Student {
   public int id; 
   @JsonInclude
   public String name;

   Student(int id, String name) {
      this.id = id;
      this.name = name;
   }
}

輸出

當指令碼成功執行時,您將看到以下輸出:

{"id":1,"name":null}

Boon - @JsonViews

@JsonViews 用於控制要序列化或不序列化的值。

示例 - @JsonView

以下示例用於 @JsonView:

import org.boon.json.JsonSerializer;
import org.boon.json.JsonSerializerFactory;
import org.boon.json.annotations.JsonViews;

public class BoonTester {
   public static void main(String args[]) {
      JsonSerializer serializerPublic = new JsonSerializerFactory()
         .useAnnotations()
         .setView( "public" )
         .create();
      
      JsonSerializer serializerInternal = new JsonSerializerFactory()
         .useAnnotations()
         .setView( "internal" )
         .create();
      
      Student student = new Student(1,"Mark", 20);
      String jsonString = serializerPublic.serialize( student ).toString();
      System.out.println(jsonString);         
      jsonString = serializerInternal.serialize( student ).toString();
      System.out.println(jsonString);
   }
}
class Student {   
   public int id;   
   public String name;
   @JsonViews( ignoreWithViews = {"public"}, includeWithViews = {"internal"})
   public int age;

   Student(int id, String name, int age) {
      this.id = id;
      this.name = name;
      this.age = age;
   }
}

輸出

我們將獲得類似於以下的輸出:

{"id":1,"name":"Mark"}
{"id":1,"name":"Mark","age":20}

Boon - @JsonProperty

@JsonProperty 用於標記要與 json 屬性一起使用的非標準 getter/setter 方法。

示例 - @JsonProperty

以下示例用於 @JsonProperty:

import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;
import org.boon.json.annotations.JsonProperty;

public class BoonTester {
   public static void main(String args[]) {
      ObjectMapper mapper = JsonFactory.create();     
      Student student = new Student(1);  
      String jsonString = mapper.writeValueAsString(student);
      System.out.println(jsonString);    
   }
}
class Student { 
   private int id;
   Student(){}
   Student(int id){
      this.id = id;
   }
   @JsonProperty("id")
   public int getTheId() {
      return id;
   }
   @JsonProperty("id")
   public void setTheId(int id) {
      this.id = id;
   }   
}

輸出

執行後,您將收到以下輸出:

{"id":1}
廣告

© . All rights reserved.