# mson **Repository Path**: myj001/mson ## Basic Information - **Project Name**: mson - **Description**: 一个简单的json库,实现了json文本与pojo之间的转换。 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-01-08 - **Last Updated**: 2022-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: JSON, json工具 ## README # mson #### 介绍 一个简单的json库,实现了json文本与pojo之间的转换。 #### 软件架构 以下介绍时`Json`指得是实现了接口`Json`的对象,`json文本`指字符串类型的json数据。 定义了`Json`接口表示json数据,作为`pojo`和`json文本`之间的中间体。 其实现类说明: - `JsonArray`代表json数组 - `JsonObject`代表json对象 - `JsonBoolean`代表布尔类型的数据 - `JsonInteger`代表整数类型的数据 - `JsonFloat`代表小数类型的数据 - `JsonString`代表字符串类型的数据 - `JsonDate`代表日期类型的数据 `mson`未依赖任何库。 lib目录下的jar包为测试用,来自 [jmcok](https://gitee.com/myj001/jmock) #### 安装教程 1. 下载源码自行编译打包 2. 下载jar目录下的jar包,mson.jar是编译后的包,mson-source.jar包是源码包,mson-all.jar包中含有字节码文件和源码文件。 #### 使用说明 ##### 入口 类`Mson`是一个工具类,里面包含5类静态方法。 - `static String toJsonStr(Object obj)` - `static String toJsonStr(Object obj, MsonConfig config)` 使用默认或指定的配置将obj转换为`json文本`,返回类型为`String`,参数obj可以是`Pojo`或`Json` - `static Json toJson(Object obj)` - `static Json toJson(Object obj, MsonConfig config)` 使用默认或指定的配置将obj转换为`Json`,返回类型为`Json`,参数obj可以是`Pojo`或`json文本` - `static T toBean(Object obj, Class clazz)` - `static T toBean(Object obj, Class clazz, MsonConfig config)` 使用默认或指定的配置将obj转换为`Pojo`,返回类型为clazz指定的类型,参数obj可以是`Json`或`json文本` - `static List toList(Object obj)` - `static List toList(Object obj, MsonConfig config)` 使用默认或指定的配置将obj转换为`List`,返回类型为`List`,参数obj可以是`Json`或`json文本` - `static Map toMap(Object obj)` - `static Map toMap(Object obj, MsonConfig config)` 使用默认或指定的配置将obj转换为`Map`,返回类型为`Map`,参数obj可以是`Json`或`json文本` - `static Json readJson(File file)` - `static Json readJson(File file, Charset charset)` - `static Json readJson(File file, MsonConfig config)` - `static Json readJson(File file, Charset charset, MsonConfig config)` 使用默认或指定的配置和编码从file中读取`json文本`并转化为`Json`,返回类型为`Json`,默认编码为`UTF-8`。 - `static void writeJson(Json json, File file)` - `static void writeJson(Json json, File file, Charset charset)` - `static void writeJson(Json json, File file, MsonConfig config)` - `static void writeJson(Json json, File file, Charset charset, MsonConfig config)` 使用默认或指定的配置和编码将json转换为`json文本`并写入file中,无返回值,默认编码为`UTF-8`。 方法在调用中可能产生的异常: - `NullPointerException`:传入的参数为空时抛出 - `MsonException`:除参数为空时其他一切原因,`MsonException`继承了`RuntimeException` ##### 配置 `MsonConfig`是`mson`的配置类。 配置类`MsonConfig`使用了建造者模式,创建方法: ``` MsonConfig config = MsonConfig.builder().build(); ``` 其中配置项如下: - `isPretty`:是否美化,指在生成`json文本`时是生成压缩的还是美化的,默认为`false` - `readDateFormat`:读日期格式,在解析`json文本`时会把符合读日期格式的字符串解析成日期,默认为`yyyy-MM-dd HH:mm:ss` - `writeDateFormat`:写日期格式,在生成`json文本`时会把日期转化为写日期格式的字符串,默认为`yyyy-MM-dd HH:mm:ss` - `spaceNum`:每行缩进空格数,在生成美化的`json文本`时缩进的空格数,默认为4 - `isPojo`:是`java.util.function.Predicate`类型,用来判断某个类是否是`pojo` - `scale`:是小数格式化时保留的小数位数,负数表示不格式化,默认为-1 - `roundingMode`:是小数格式化时格式化方式,默认为四舍五入 ##### 注解 在解析和生成`Pojo`时有两个添加到字段上的注解: - `MsonAlias`:别名,其参数值为别名。添加了该注解,别名将代替该字段的字段名 - `MsonIgnore`:忽略,没有参数值。添加了该注解,在解析和生成`Pojo`时将会忽略该字段 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)