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 打印最终的目标对象

分类: 编程语言 标签: 发布于: 2020-12-26 17:04:43, 点击数: