https://github.com/weivea/protojson
一个基于约定协议的json压缩,解压缩 插件,包含java的最简实现
https://github.com/weivea/protojson
Last synced: 2 months ago
JSON representation
一个基于约定协议的json压缩,解压缩 插件,包含java的最简实现
- Host: GitHub
- URL: https://github.com/weivea/protojson
- Owner: weivea
- Created: 2018-08-23T04:34:26.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-09-02T02:40:32.000Z (almost 8 years ago)
- Last Synced: 2025-03-06T04:29:21.951Z (over 1 year ago)
- Language: Java
- Size: 250 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# proto-json
一个基于约定协议的json压缩,解压缩 插件,
编码:根据protocal.json把json的key替换成数字;
解码:根据protocal.json吧编码json的 数字key再替换回来
## install
`npm install @weivea/proto-json`
## test
运行测试
```
npm run test
```
## usage
```javascript
var ProtoJson = require('@weivea/proto-json');
var protocal = {
width: '',
height: '',
weight: '',
age:'',
name: '',
partner: {
width: '',
height: '',
weight: '',
age:'',
name: ''
},
children: [
{
width: '',
height: '',
weight: '',
age:'',
name:'',
friends: [
{
name:'',
type:'',
gender:''
}
]
}
]
}
var data = {
width: 50,
height: 180,
weight: 50,
age:30,
name: 'lalala',
partner: {
width: 28,
height: 170,
weight: 49,
age:30,
name: 'bobo',
adc:'acasdv'
},
children: [
{
width: 30,
height: 100,
weight: 40,
age:12,
name:'liliya',
friends: [
{
name:'tom',
type:'cat'
},
{
name:'bam',
type:'dog'
}
]
},
{
width: 45,
height: 160,
weight: 45,
age:15,
name:'tifny',
friends: [
{
name:'erix',
gender:'male'
}
]
},
]
}
var dataStr = JSON.stringify(data);
console.log('原数据:', dataStr);
console.log('');
var protoJsoner = new ProtoJson(protocal);
var encodejson = protoJsoner.encode(data);
console.log('编码数据:', JSON.stringify(encodejson));
console.log('');
var decodejson = protoJsoner.decode(encodejson);
console.log('解码数据:', JSON.stringify(decodejson));
```
打印输出:
```
原数据: {"width":50,"height":180,"weight":50,"age":30,"name":"lalala","partner":{"width":28,"height":170,"weight":49,"age":30,"name":"bobo","adc":"acasdv"},"children":[{"width":30,"height":100,"weight":40,"age":12,"name":"liliya","friends":[{"name":"tom","type":"cat"},{"name":"bam","type":"dog"}]},{"width":45,"height":160,"weight":45,"age":15,"name":"tifny","friends":[{"name":"erix","gender":"male"}]}]}
编码数据: {"1":30,"2":[{"1":12,"2":[{"2":"tom","3":"cat"},{"2":"bam","3":"dog"}],"3":100,"4":"liliya","5":40,"6":30},{"1":15,"2":[{"1":"male","2":"erix"}],"3":160,"4":"tifny","5":45,"6":45}],"3":180,"4":"lalala","5":{"1":30,"2":170,"3":"bobo","4":49,"5":28,"adc":"acasdv"},"6":50,"7":50}
解码数据: {"age":30,"children":[{"age":12,"friends":[{"name":"tom","type":"cat"},{"name":"bam","type":"dog"}],"height":100,"name":"liliya","weight":40,"width":30},{"age":15,"friends":[{"gender":"male","name":"erix"}],"height":160,"name":"tifny","weight":45,"width":45}],"height":180,"name":"lalala","partner":{"age":30,"height":170,"name":"bobo","weight":49,"width":28,"adc":"acasdv"},"weight":50,"width":50}
```
## java 端 的最简实践
命令查看测试结果
```
javac -cp ./:./protojsonjava/lib/gson.jar protojsonjava/TestJSON.java
java -cp ./:./protojsonjava/lib/gson.jar protojsonjava/TestJSON
```