# data-converter
**Repository Path**: CHMing7/data-converter
## Basic Information
- **Project Name**: data-converter
- **Description**: 一个支持多种数据格式协议的数据转换组件
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 6
- **Created**: 2021-05-25
- **Last Updated**: 2024-12-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
-------------------------------------------------------------------------------
## 📚简介
Data-Converter是一个支持多种数据格式协议的数据转换组件
-------------------------------------------------------------------------------
## 🛠️支持协议及相关模块
| 模块 | 协议 | 引用模块 |
|:------------------------------:|:----------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| data-converter-fastjson | JSON | com.alibaba:fastjson:version |
| data-converter-fastjson2-json | JSON | com.alibaba.fastjson2:fastjson2:version |
| data-converter-fastjson2-jsonb | JSONB | com.alibaba.fastjson2:fastjson2:version |
| data-converter-gson | JSON | com.google.code.gson:gson:version |
| data-converter-jackson-json | JSON | com.fasterxml.jackson.core:jackson-core:version
com.fasterxml.jackson.core:jackson-databind:version
com.fasterxml.jackson.core:jackson-annotations:version |
| data-converter-jackson-xml | Xml | com.fasterxml.jackson.dataformat:jackson-dataformat-xml:version |
| data-converter-avro | Avro | org.apache.avro:avro:version |
| data-converter-hessian | Hessian | com.caucho:hessian:version |
| data-converter-kryo | Kryo | com.esotericsoftware:kryo:version |
| data-converter-protobuf | Protobuf | com.google.protobuf:protobuf-java:version
io.protostuff:protostuff-core:version |
| data-converter-protostuff | Protostuff | io.protostuff:protostuff-core:version |
| data-converter-fst | Fst | de.ruedigermoeller:fst:version |
| data-converter-jackson-msgpack | Msgpack | org.msgpack:jackson-dataformat-msgpack:version |
| data-converter-spearal | Spearal | org.spearal:spearal-java:version |
| data-converter-thrift | Thrift | org.apache.thrift:thrift:version |
| data-converter-jackson-yaml | Yaml | com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:version |
| data-converter-jackson-cbor | Cbor | com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:version |
| data-converter-jackson-ion | Ion | com.fasterxml.jackson.dataformat:jackson-dataformat-ion:version |
| data-converter-jackson-smile | Smile | com.fasterxml.jackson.dataformat:jackson-dataformat-smile:version |
可以根据需求对每个模块单独引入,也可以通过引入`data-converter-all`方式引入所有模块。
-------------------------------------------------------------------------------
## 📦安装
### 🍊Maven
在项目的pom.xml的dependencies中引入all模块:
```xml
io.gitee.chming7
data-converter-all
Version
```
或
**使用bom模块的方式引入**
**import方式**
在父模块中加入
```xml
io.gitee.chming7
data-converter-bom
Version
pom
import
```
在子模块中引入自己需要的模块
```xml
io.gitee.chming7
data-converter-gson
```
**exclude方式**
如果你引入的模块比较多,但是某几个模块没用,你可以
```xml
io.gitee.chming7
data-converter-bom
Version
pom
io.gitee.chming7
data-converter-avro
```
### 🍐Gradle
**方式一:引入所有模块**
```
implementation ("io.gitee.chming7:data-converter-all:Version")
```
**方式二:引入自己需要的模块**
```
implementation enforcedPlatform('io.gitee.chming7:data-converter-bom:Version')
implementation ("io.gitee.chming7:data-converter-gson")
```
**方式三:排除不需要的模块**
```
implementation enforcedPlatform('io.gitee.chming7:data-converter-bom:Version')
implementation ("io.gitee.chming7:data-converter-bom"){
exclude module: "data-converter-json"
}
```
### 📥下载jar
点击以下链接,搜索下载`data-converter-xxx-X.X.X.jar`即可:
- [Maven中央库](https://mvnrepository.com/search?q=io.gitee.chming7)
### 🚽编译安装
访问Data-converter的Gitee主页:[Gitee](https://gitee.com/CHMing7/data-converter)
下载整个项目源码(master分支)然后进入Data-Converter项目目录执行:
```sh
gradle install
```
然后就可以使用Maven引入了。
-------------------------------------------------------------------------------
## 📝简单示例
```java
JsonConverter converter=ConverterSelector.select(JsonConverter.class);
// 或者
JsonConverter converter=JsonConverter.select();
// 序列化
String encode=converter.encode(user);
// 反序列化
User newUser=converter.convertToJavaObject(encode,User.class);
```
-------------------------------------------------------------------------------
## 🏗️添砖加瓦
### 🐞提供bug反馈或建议
提交问题反馈请说明正在使用的JDK版本呢、Data-Converter版本和相关依赖库版本。
- [Gitee issue](https://gitee.com/CHMing7/data-converter/issues)
### ⛽贡献代码的步骤
--------------------------------------------------------------------------------
1. 提issue,如果在gitee的issue中已经有您想解决的问题,可以直接将该issue分配给您自己。如若没有,可以自己在gitee上创建一个issue。
2. Fork 本项目的仓库
3. 新建分支,如果是加新特性,分支名格式为`feat_${issue的ID号}`,如果是修改bug,则命名为`fix_${issue的ID号}`。
4. 本地自测,提交前请通过所有的已经单元测试,以及为您要解决的问题新增单元测试。
5. 提交代码
6. 新建 Pull Request
7. 我会对您的PR进行验证和测试,如通过测试,我会合到`dev`分支上随新版本发布时再合到`master`分支上。
-------------------------------------------------------------------------------
项目协议
--------------------------
The MIT License (MIT)
Copyright (c) 2022 CHMing