okjson 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
okjson 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开发厂商
地区 国产
提 交 者 calvinwilliams
适用人群 未知
收录时间 2019-04-18

软件简介

okjson - JAVA编写的小巧、高效、灵活的JSON处理器(JSON解析器+JSON生成器)

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,如果你在使用中碰到了问题请告诉我,谢谢 ^_^

源码托管地址 : Giteegithub

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解析器、日志采集器等,大到交易平台/中间件等,分布式系统实践者,容器技术专研者,目前在某城商行负责基础架构。

通过邮箱联系我 : 网易Gmail

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (2)

加载中
支持null不写,转换么
2019/06/19 09:49
回复
举报
支持Null不写?Null为空,Null为0等转换吗?
2019/04/23 02:18
回复
举报
更多评论
发表于大前端专区
2019/04/18 16:39

okjson 更新至 v0.0.9.0,小巧、高效、灵活的 JSON 处理器

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用于格式化日期、时间属性 * 修正了转...

9
22
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/12/05 15:36

使用WireMock进行更好的集成测试

无论您是遵循传统的测试金字塔还是采用诸如“测试蜂窝”这样的较新方法,都应该在开发过程中的某个时候开始编写集成测试用例。 您可以编写不同类型的集成测试。从持久性测试开始,您可以检查组件之间的交互,也可...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
2 评论
34 收藏
分享
返回顶部
顶部