天天看点

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

1、Gson

依赖
implementation 'com.google.code.gson:gson:2.8.6'
           

实体类(Bean)转JSON

JSON转实体类(Bean)

Map转Json

Json转Map

List 转JSON

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

JSON转List

2、FastJson

依赖
implementation 'com.alibaba:fastjson:1.2.70'
           

实体类(Bean)转JSON

JSON转实体类(Bean)

Map转Json

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

3、JackJson

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

需要 throws JsonProcessingException

private static ObjectMapper MAPPER = new ObjectMapper();

实体类(Bean)转JSON

JSON转实体类(Bean)

Map转Json

Json转Map

List 转JSON

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

JSON转List

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

继续阅读