java打印protobuf message为json
前言
本文讲解如何在java项目中,打印protobuf的结构体为 json。如果你刚刚接触到java和protobuf开发,这篇文章可以帮助到您。
问题
如果你直接用fastjson或者gson等转换对象为json string,你会报错。
比如你用
JSON.toJSONString(grpcService.getUserInfo());
报错像这样
: write javaBean error, fastjson version 1.2.56, class com.google.protobuf.Descriptors$FieldDescriptor, write javaBean error, fastjson version 1.2.56, class com.google.protobuf.Descriptors$Descriptor, fieldName : ***, write javaBean error, fastjson version 1.2.56, class com.google.protobuf.Descriptors$FieldDescriptor, fieldName : 1
正确打印为json
我们需要用内置的方法
需要先引入 这个包
import com.google.protobuf.util.JsonFormat;
然后在需要打印(获取json字符串的位置,编码)
JsonFormat.printer().includingDefaultValueFields() .print(grpcService.getUserInfo());
print(方法里是你的服务和方法)
这样就能获取到json格式的文本了。
JsonFormat.printer()获取一个打印工具类
includingDefaultValueFields 把所有的结构都带上
print 打印最终的目标对象
分类: 编程语言 标签: JSON Java Protobuffer 发布于: 2020-12-26 17:04:43, 点击数: