- Boon 教程
- Boon - 首页
- Boon - 概述
- Boon - 环境设置
- 解析 JSON
- Boon - 转为对象
- Boon - 转为 Map
- Boon - 源码
- 生成 JSON
- Boon - 从对象生成
- Boon - 从 Map 生成
- 日期处理
- Boon - 长整型转日期
- Boon - 字符串转日期
- Boon - 生成日期
- 注解
- Boon - @JsonIgnore
- Boon - @JsonInclude
- Boon - @JsonViews
- Boon - @JsonProperty
- Boon 有用资源
- Boon - 快速指南
- Boon - 有用资源
- Boon - 讨论
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}