内容简介:0.0.9.0 2019-04-12 calvin * 静态类OKJSON新增方法objectToFile和fileToObject * 新增Demo.java * JSON数组简单类型新增支持日期、时间 * 编写README.md * 编写README.zh-CN.md 0.0.8.0 2019-04-11 calvin * 支持...
0.0.9.0 2019-04-12 calvin
* 静态类OKJSON新增方法objectToFile和fileToObject
* 新增Demo.java
* JSON数组简单类型新增支持日期、时间
* 编写README.md
* 编写README.zh-CN.md
0.0.8.0 2019-04-11 calvin
* 支持日期、时间属性的序列化/反序列化
* 增加注解OkJsonDateTimeFormatter用于格式化日期、时间属性
* 修正了转义符序列化/反序列化的BUG
0.0.7.0 2019-02-28 calvin
* 增加序列化对象
0.0.6.0 2019-02-28 calvin
* 增加反序列化子对象的非原始类型属性
* 增加压测程序
0.0.5.0 2019-02-27 calvin
* 增加反序列化子对象数组
0.0.4.0 2019-02-26 calvin
* 增加反序列化对象属性和方法的缓存
0.0.3.0 2019-02-25 calvin
* 增加反序列化值数组
0.0.2.0 2019-02-24 calvin
* 增加可选的使用设置器设置属性值
0.0.1.0 2019-02-23 calvin
* 创建
* 增加反序列化任意层次的属性
--------------------------------------------------------------------------
1. 概述
okjson是用 JAVA 编写的JSON处理器(JSON解析器+JSON生成器)。
它能帮助开发者把一段JSON文本中的数据映射到实体类中,或由一个实体类生成一段JSON文本。
它小巧,源码只有一个类文件和一个注解类文件,方便架构师嵌入到项目/框架中去。
它高效,比号称全世界最快的fastjson还要快。
它灵活,不对映射实体类有各种各样约束要求。
一个好 工具 就是简单、朴素的。
2. 一个示例
来一个简单示例感受一下(所有代码可在源码包src\test\java\xyz\calvinwilliams\okjson里找到)
2.1. 编写JSON文件
demo.json
{
"userName" : "Calvin" ,
"email" : "calvinwilliams@163.com" ,
"userExtInfo" : {
"gender" : "M" ,
"age" : 30 ,
"address" : "I won't tell you"
} ,
"interestGroupList" : [
"Programing", "Playing game", "Reading", "Sleeping"
] ,
"borrowDetailList" : [
{
"bookName" : "Thinking in JAVA" ,
"author" : "Bruce Eckel" ,
"borrowDate" : "2014-01-02" ,
"borrowTime" : "17:30:00"
} ,
{
"bookName" : "Thinking in C++" ,
"author" : "Bruce Eckel too" ,
"borrowDate" : "2014-02-04" ,
"borrowTime" : "17:35:00"
} ,
{
"bookName" : "Thinking in okjson" ,
"author" : "It's me !!!" ,
"borrowDate" : "2014-03-06" ,
"borrowTime" : "17:40:00"
}
]
}
2.2. 编写实体类
DemoUserClass.java
package xyz.calvinwilliams.okjson;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.LinkedList;
public class DemoUserClass {
String userName ;
String email ;
UserExtInfo userExtInfo ;
LinkedList<String> interestGroupList ;
LinkedList<BorrowDetail> borrowDetailList ;
}
class UserExtInfo {
String gender ;
int age ;
String address ;
}
class BorrowDetail {
String bookName ;
String author ;
@OkJsonDateTimeFormatter(format="yyyy-MM-dd")
LocalDate borrowDate ;
@OkJsonDateTimeFormatter(format="HH????????ss")
LocalTime borrowTime ;
}
2.3. 编写示例代码
读入JSON文件,映射所有字段数据到实体类属性中去
package xyz.calvinwilliams.okjson;
import java.time.format.DateTimeFormatter;
public class Demo {
public static void printDemoUser( DemoUserClass demoUser ) {
...
}
public static void main(String[] args) {
DemoUserClass demoUser = new DemoUserClass() ;
System.out.println( "OKJSON.stringToObject ..." );
demoUser = OKJSON.fileToObject( "demo.json", DemoUserClass.class, OKJSON.OKJSON_OTIONS_DIRECT_ACCESS_PROPERTY_ENABLE ) ;
if( demoUser == null ) {
System.out.println( "OKJSON.stringToObject failed["+OKJSON.getErrorCode()+"]["+OKJSON.getErrorDesc()+"]" );
return;
} else {
System.out.println( "OKJSON.stringToObject ok" );
printDemoUser( demoUser );
}
}
}
调用一个静态方法就能把JSON所有字段数据都映射到实体类属性中去,是不是很简单。
我的其它开源产品都用它装载配置文件,小巧、高效、灵活。
6. 关于本项目
欢迎使用okjson,如果你在使用中碰到了问题请告诉我,谢谢 ^_^
Apache Maven
<dependency> <groupId>xyz.calvinwilliams</groupId> <artifactId>okjson</artifactId> <version>0.0.9.0</version> </dependency>
Gradle Kotlin DSL
compile("xyz.calvinwilliams:okjson:0.0.9.0")
7. 关于作者
厉华,左手C,右手JAVA,写过小到性能卓越方便快捷的日志库、HTTP解析器、日志采集器等,大到交易平台/中间件等,分布式系统实践者,容器技术专研者,目前在某城商行负责基础架构。
以上所述就是小编给大家介绍的《okjson 更新至 v0.0.9.0,小巧、高效、灵活的 JSON 处理器》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- “统治”移动处理器市场的Arm为何明年Q1才发布AI处理器?
- AMD 7nm EPYC处理器亮相:性能提升一倍,世界最强X86处理器
- 36.Django内容处理器
- Bean的后置处理器
- 处理器是如何调度进程的?
- JVM进阶 -- 浅谈注解处理器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
AJAX企业级开发
Davec Johnson、Alexeic White、Andrec Charland / 张祖良、荣浩、高冰 / 人民邮电出版社 / 2008 / 49.00元
本书首先解释了AJAX 为什么在大规模的开发中能有如此广阔的应用前景,接着系统地介绍了当前重要的AJAX 技术和组件。你将看到把数据表、Web 窗体、图表、搜索和过滤连接在一起用于构建AJAX应用程序的框架开发的整个过程;在此基础上,本书给出了已经过证实的AJAX 架构模式,以及来源于实际的.NET 和Java AJAX 应用程序的案例研究。一起来看看 《AJAX企业级开发》 这本书的介绍吧!