Boon - 快速指南
Boon - 概述
Boon是一个简单的基于 Java 的 JSON 工具包。您可以使用 Boon JSON 以高效且快速的方式对 JSON 数据进行编码或解码。
布恩的特点
Boon 的特点解释如下 -
快速- 与 Jackson 相比,Boon JSON 在对象序列化方面更快,支持 JSON 表达式和 JSON 解析。
轻量级- 它具有很少的类,并提供必要的功能,例如编码/解码对象映射。
数据绑定- 大多数操作都是使用数据绑定和索引覆盖完成的。
无公共树模型- 最终用户视图是数据绑定视图。
支持简单的数据绑定- 提供与原语的数据绑定以及自动装箱。
高性能- 使用基于堆的解析器并提供高性能。
无依赖性- 无外部库依赖性。可以独立包含。
JDK1.2 兼容- 源代码和二进制文件与 JDK1.2 兼容
Boon - 环境设置
在本章中,我们将了解Boon的本地环境设置以及如何在Windows 2000/XP、Windows 95/98/ME等环境中设置Boon的路径。我们还将了解一些流行的java编辑器以及如何下载恩档案。
本地环境设置
如果您仍然愿意为 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 |
苹果 | Boon-0.34.jar |
设置Boon环境
将BOON环境变量设置为指向计算机上存储 Boon jar 的基本目录位置。假设我们已经在各种操作系统上的 Boon 文件夹中提取了boon-0.34.jar,如下所示。
操作系统 | 输出 |
---|---|
Windows | 将环境变量 BOON 设置为 C:\Boon |
Linux | 导出 BOON=/usr/local/Boon |
苹果 | 导出 BOON=/库/Boon |
设置 CLASSPATH 变量
设置CLASSPATH环境变量以指向 Boon jar 位置。假设您已将 boon-0.34.jar 存储在各种操作系统上的 Boon 文件夹中,如下所示。
操作系统 | 输出 |
---|---|
Windows | 设置环境变量 CLASSPATH 为 %CLASSPATH%;%Boon%\boon-0.34.jar;.; |
Linux | 导出 CLASSPATH=$CLASSPATH:$BOON/boon-0.34.jar:. |
苹果 | 导出 CLASSPATH=$CLASSPATH:$BOON/boon-0.34.jar:. |
Boon - 反对
ObjectMapper是 Boon 库的主要参与者类。ObjectMapper 类提供了在基本 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 - 前往地图
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。
字节数组
字符数组
文件
读者班
输入流类
细绳
例子
以下示例使用 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 - 来自地图
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 类从 String 版本生成日期字符串。
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 - @JsonIninclude
@JsonInclude 用于包含具有 null/空或默认值的属性。默认情况下,Boon 在序列化/反序列化期间忽略此类属性。
示例 - @JsonIninclude
以下示例适用于 @JsonIninclude -
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}