Gson,FastJson,JackJson,ProtoBuf 数据格式转换详解

1、Gson

依赖

implementation 'com.google.code.gson:gson:2.8.6'
Gson gson = new Gson();

实体类(Bean)转JSON

String json = gson.toJson(new Bean());

JSON转实体类(Bean)

Bean b = gson.fromJson('json',Bean.class);

Map转Json

gson.toJson(map)

Json转Map

Map<String, Object> map = gson.fromJson("json",new TypeToken<Map<String, Object>>() {}.getType());

List 转JSON

LList<Bean> list = new ArrayList<>();
list.add(new Bean());
gson.toJson(list)

JSON转List

List<Bean> list = gson.fromJson('json',new TypeToken<List<Bean>>(){}.getType());

2、FastJson

依赖

implementation 'com.alibaba:fastjson:1.2.70'

实体类(Bean)转JSON

JSON.toJSONString(new Bean())

JSON转实体类(Bean)

Bean b = JSON.parseObject('json',Bean.class);

Map转Json

JSON.toJSONString('map')

Json转Map

JSONObject  jsonObject = JSONObject.parseObject(JSON.toJSONString(new Bean()));
Map<String,Object> map = (Map<String,Object>)jsonObject;
Object object = map.get("array");

List 转JSON

 List<Bean> list = new ArrayList<>();
 list.add(new Bean());
 JSON.toJSONString(list)

JSON转List

JSON.parseArray('json',Bean.class);

3、JackJson

依赖

implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.0'

需要 throws JsonProcessingException

private static ObjectMapper MAPPER = new ObjectMapper();

实体类(Bean)转JSON

MAPPER.writeValueAsString(new Bean())

JSON转实体类(Bean)

MAPPER.readValue('json', Bean.class)

Map转Json

MAPPER.writeValueAsString('map')

Json转Map

Map map = MAPPER.readValue('json',Map.class);

List 转JSON

List<Bean> list = new ArrayList<>();
list.add(new Bean()); 
String ljson = MAPPER.writeValueAsString(list);

JSON转List

MAPPER.readValue('json', ArrayList.class)

4、ProtoBuf

配置依赖 具体配置查看 demo

implementation 'com.googlecode.protobuf-java-format:protobuf-java-format:1.2'

ProtoBuf转Json

BeanBuf beanBuf = BeanBuf.newBuilder().setName("测试").build();
String jsonFormat = JsonFormat.printToString(beanBuf);

Json转ProtoBuf

BeanBuf bean = BeanBuf.newBuilder().build();
JsonFormat.merge('json', bean.toBuilder());

Proto序列化

BeanBuf bean = BeanBuf.newBuilder().setAge(11111111).build();
byte[] byteArray1 = bean.toByteArray();
Arrays.toString(byteArray1)

Proto反序列化

BeanBuf bean = BeanBuf.newBuilder().setAge(11111111).build();
try {
    BeanBuf buf = BeanBuf.parseFrom(bean.toByteArray());
    mBinding.textView.setText(buf.toString());
} catch (IOException e) {
	e.printStackTrace();
}

本文源码 FormatConversionExample

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Godery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值