Boon 简明教程
Boon - Overview
Boon 是基于 Java 的简单 JSON 工具包。您可以使用 Boon JSON 以高效、更快速的方式对 JSON 数据进行编码或解码。
Features of Boon
Boon 的功能如下所述 −
-
Fast − 与 Jackson 相比,Boon JSON 在对象序列化中更快,支持 JSON 表达式和 JSON 解析。
-
Lightweight − 它的类非常少,并提供对象映射的编码/解码等必要的功能。
-
Data Binding − 大多数的操作都使用数据绑定和索引叠加执行。
-
No public tree model − 最终用户视图是数据绑定视图。
-
Supports simple data binding − 提供了与基元进行数据绑定的功能,并具有自动装箱功能。
-
High performance − 使用基于堆的解析器,并提供高性能。
-
No dependency − 无需外部库依赖。可以独立包含。
-
JDK1.2 compatible − 源代码和二进制文件兼容 JDK1.2
Boon - Environment Setup
在本章中,我们将了解 Boon 的本地环境设置,以及如何在 Windows 2000/XP、Windows 95/98/ME 等系统上设置 Boon 的路径。我们还将了解一些流行的 Java 编辑器以及如何下载 Boon 存档。
Local Environment Setup
如果您仍然愿意为 Java 编程语言设置环境,那么本章将指导您如何在机器上下载和设置 Java。请遵循以下步骤来设置环境。
Java SE 可从链接 www.oracle.com/java/technologies/oracle-java-archive-downloads.html 免费获取。因此,可根据操作系统下载版本。
按照说明下载 Java 并运行 .exe 以在您的计算机上安装 Java。安装计算机上的 Java 后,您需要设置环境变量以指向正确的安装目录 −
Path for Windows 2000/XP
我们假设已在 c:\Program Files\java\jdk 目录中安装 Java −
-
右击 'My Computer' 并选择 'Properties' 。
-
单击 'Advanced' 选项卡下的 'Environment variables' 按钮。
-
现在,更改“路径”变量,使其也包含 Java 可执行文件的路径。例如,如果当前路径设置为 'C:\WINDOWS\SYSTEM32' ,则更改路径为 'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin' 。
Path for Windows 95/98/ME
我们假设已在 c:\Program Files\java\jdk 目录中安装 Java −
-
编辑 ‘C:\autoexec.bat’ 文件并在末尾添加以下行 − ‘SET PATH=%PATH%;C:\Program Files\java\jdk\bin’
Path for Linux, UNIX, Solaris, FreeBSD
环境变量 PATH 应设置为指向已安装 Java 二进制文件的位置。如果你在这方面遇到问题,请参阅 shell 文档。
例如,如果您用 bash 作为您的 shell,则您将向您 '.bashrc: export PATH=/path/to/java:$PATH' 的末尾添加以下行
Popular Java Editors
要编写 Java 程序,您需要一个文本编辑器。市场中有许多高级集成开发环境可用。但目前,您可以考虑以下选项之一 −
-
Notepad − 在 Windows 计算机上,您可以使用任何简单的文本编辑器,例如记事本(推荐用于本教程)、TextPad。
-
Netbeans − 该 Java IDE 是开源且免费的,可从 www.netbeans.org/index.html 下载。
-
Eclipse − 它也是一个由 eclipse 开源社区开发的 Java 集成开发环境,可以从 www.eclipse.org 下载。
Download Boon Archive
从 Maven Repository - Boon 下载最新版本的 Boon jar 文件。此文件位于 https://mvnrepository.com/artifact/io.fastjson/boon 。在此教程中,下载 boon-0.34.jar 文件并将其复制到 C:\> boon 文件夹中。
OS |
Archive name |
Windows |
boon-0.34.jar |
Linux |
boon-0.34.jar |
Mac |
boon-0.34.jar |
Boon - To Object
ObjectMapper 是 Boon 库的主要 Actor 类。ObjectMapper 类提供用于读写 JSON 的功能,可以从基本的 POJO(纯旧 Java 对象)读写或写到基本 POJO,也可以从通用的 JSON 树模型(JsonNode)读写或写到通用 JSON 树模型,以及用于执行转换的相关功能。
它还具有高度的可定制性,既适用于不同样式的 JSON 内容,又支持更高级的对象概念,例如多态性和对象标识。
Example
以下示例使用 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+ " ]";
}
}
Boon - To Map
ObjectMapper 类还可用于解析 JSON 到 Map 对象,而不是 POJO 对象。
Example
以下示例使用 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"));
}
}
Boon - Sources
ObjectMapper 类可用于从不同的源解析 json。它可以使用以下源解析 JSON。
-
byte Array
-
char Array
-
File
-
Reader classes
-
Input Stream classes
-
String
Example
以下示例使用 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"));
}
}
Boon - From Object
ObjectMapper 类可用于从对象生成 json 字符串。
Example
以下示例使用 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;
}
}
Boon - From Map
ObjectMapper 类可用于从 Map 生成 JSON 字符串。
Example
以下示例正在使用 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);
}
}
Boon - Long To Date
ObjectMapper 类可用于处理 JSON 中不同的日期格式。该类可用于解析/生成日期的长版本。
Example
以下示例使用 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;
}
}
Boon - String To Date
ObjectMapper 类可以用于处理 JSON 中不同的日期格式。它可以用来解析/生成字符串版本的日期。
Example
以下示例使用 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;
}
}
Boon - Generating Date
ObjectMapper 类可以用于处理 JSON 中不同的日期格式。它也可以用于生成日期对象。ObjectMapper 默认生成长毫秒版本的 Date。通过使用 JsonFactory.createUseJSONDates() 方法返回的 ObjectMapper,我们可以获取解析期间的字符串版本日期。
Example
以下示例正在使用 ObjectMapper 类通过解析 JSON 生成 Date 字符串。
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;
}
}
Boon - @JsonIgnore
@JsonIgnore 在字段级别用于标记要忽略的属性或属性列表。
Example - @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;
}
}
Boon - @JsonInclude
@JsonInclude 用于包含具有 null/空或默认值 的属性。默认情况下,Boon 在序列化/反序列化期间会忽略此类属性。
Example - @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;
}
}
Boon - @JsonViews
@JsonViews 用于控制值是否被序列化。
Example - @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;
}
}
Boon - @JsonProperty
@JsonProperty 用于将非标准的 getter/setter 方法标记为与 json 属性一起使用。
Example - @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;
}
}