四时宝库

程序员的知识宝库

protobuf与json互相转换(protobuf比json数据小多少)

proto文件:

option java_outer_classname = "PersonEntity";//生成的数据访问类的类名

message Person {

required int32 id = 1;//同上

required string name = 2;//必须字段,在后面的使用中必须为该段设置值

optional string email = 3;//可选字段,在后面的使用中可以自由决定是否为该字段设置值

}

使用idea编译成java解析文件:详见另一篇文章

引入依赖:

<dependency>

<groupId>com.google.protobuf</groupId>

<artifactId>protobuf-java</artifactId>

<version>2.5.0</version>

</dependency>

<dependency>

<groupId>com.googlecode.protobuf-java-format</groupId>

<artifactId>protobuf-java-format</artifactId>

<version>1.2</version>

</dependency>

PB转换为JSON:

PersonEntity.Person.Builder builder = PersonEntity.Person.newBuilder();

builder.setId(1);

builder.setName("极客慧");

builder.setEmail("jikeh@***.com");

PersonEntity.Person person = builder.build();

System.out.println("原pb文件: "+person.toString());

System.out.println("原pb文件转换为JSON文件: "+JsonFormat.printToString(person));

JSON转换为PB:

String jsonStr = "{"id": 1,"name": "极客慧","email": "jikeh@***.com"}";

PersonEntity.Person.Builder builderPerson = PersonEntity.Person.newBuilder();

JsonFormat.merge(jsonStr, builderPerson);

PersonEntity.Person person2 = builderPerson.build();

System.out.println("JSON文件转换为PB: "+person2.toString());

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接