📜  Boon-快速指南

📅  最后修改于: 2020-11-18 09:09:26             🧑  作者: Mango


Boon是一个简单的基于Java的JSON工具箱。您可以使用Boon JSON以高效快捷的方式对JSON数据进行编码或解码。

特征

  • 快速-Boon JSON在对象序列化方面更快,与Jackson相比,启用JSON表达式和JSON解析。

  • 轻量级-它只有很少的类,并提供必要的功能,例如编码/解码对象映射。

  • 数据绑定-大多数操作都是使用数据绑定和索引覆盖完成的。

  • 没有公共树模型-最终用户视图是数据绑定视图。

  • 支持简单的数据绑定-提供与原语以及自动装箱的数据绑定。

  • 高性能-使用基于堆的解析器并提供高性能。

  • 无依赖性-无外部库依赖性。可以独立包含。

  • 兼容JDK1.2-源代码和二进制文件均兼容JDK1.2

Boon-环境设置

本地环境设置

如果您仍然愿意为Java编程语言设置环境,那么本节将指导您如何在计算机上下载和设置Java。请按照下面提到的步骤设置环境。

可从下载Java链接免费获得Java SE。因此,您将根据您的操作系统下载一个版本。

按照说明下载Java并运行.exe在计算机上安装Java。在计算机上安装Java之后,您需要设置环境变量以指向正确的安装目录-

设置Windows 2000 / XP的路径

我们假设您已经在c:\ Program Files \ java \ jdk目录中安装了Java-

  • 右键单击“我的电脑”,然后选择“属性”。

  • 单击“高级”选项卡下的“环境变量”按钮。

  • 现在,更改“ Path”变量,使其也包含Java可执行文件的路径。例如,如果当前路径设置为“ C:\ WINDOWS \ SYSTEM32”,则将路径更改为“ C:\ WINDOWS \ SYSTEM32; c:\ Program Files \ java \ jdk \ bin”。

设置Windows 95/98 / ME的路径

我们假设您已经在c:\ Program Files \ java \ jdk目录中安装了Java-

  • 编辑’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,它是开源的并且免费的,可以从https://www.netbeans.org/index.html下载。

  • Eclipse-这也是eclipse开源社区开发的Java IDE,可以从https://www.eclipse.org/下载。

下载Boon存档

Maven存储库-Boon下载最新版本的Boon jar文件。在本教程中,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环境变量设置为指向在计算机上存储Boon jar的基本目录位置。假设,我们已按如下所示在各种操作系统的Boon文件夹中提取了boon-0.34.jar。

OS Output
Windows Set the environment variable BOON to C:\Boon
Linux export BOON=/usr/local/Boon
Mac export BOON=/Library/Boon

设置CLASSPATH变量

CLASSPATH环境变量设置为指向Boon jar位置。假设您已经将boon-0.34.jar存储在各种操作系统的Boon文件夹中,如下所示。

OS Output
Windows Set the environment variable CLASSPATH to %CLASSPATH%;%Boon%\boon-0.34.jar;.;
Linux export CLASSPATH=$CLASSPATH:$BOON/boon-0.34.jar:.
Mac export CLASSPATH=$CLASSPATH:$BOON/boon-0.34.jar:.

恩赐-反对

ObjectMapper是Boon库的主要actor类。 ObjectMapper类提供用于在基本POJO(普通旧Java对象)之间或从通用JSON树模型(JsonNode)之间读取和写入JSON的功能,以及用于执行转换的相关功能。它也可以高度自定义,以使用不同样式的JSON内容,并支持更高级的Object概念,例如多态性和Object Identity。

以下示例使用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 ]

恩恩-地图

ObjectMapper类也可以用于将json解析为Map对象,而不是POJO对象。

以下示例使用ObjectMapper类将JSON字符串解析为Map Object。

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

恩赐-来源

ObjectMapper类可用于解析来自各种来源的json。它可以使用以下源来解析JSON。

  • 字节数组

  • 字符数组

  • 文件

  • 读者班

  • 输入流类

以下示例使用ObjectMapper类将JSON char数组解析为Map Object。

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

恩赐-来自物体

ObjectMapper类可用于从Object生成json字符串。

以下示例使用ObjectMapper类从学生对象生成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 Object生成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 student = new HashMap<>();
      student.put("Name", "Mahesh");
      student.put("RollNo", "21");
      
      Map student1 = new HashMap<>();
      student1.put("Name", "Suresh");
      student1.put("RollNo", "22");
      
      List> studentList = new ArrayList<>();
      studentList.add(student);
      studentList.add(student1);
      
      Map studentMap = new HashMap();
      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类从长版本生成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.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版本生成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.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会生成长毫秒版本的Date。使用JsonFactory.createUseJSONDates()方法返回的ObjectMapper,我们可以在解析期间获取日期的字符串版本。

下面的示例使用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;
   }
}

输出

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

Boon-@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"}

恩赐-@JsonInclude

@JsonInclude用于包含具有空值/空值或默认值的属性。默认情况下,Boon在序列化/反序列化过程中会忽略此类属性。

示例-@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}

恩-@JsonViews

@JsonViews用于控制值是否要序列化。

示例-@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}

恩-@JsonProperty

@JsonProperty用于标记要用于json属性的非标准getter / setter方法。

示例-@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}