大佬教程收集整理的这篇文章主要介绍了使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
XXXXXXXXrequest.builder request = XXXXXXXXrequest.newBuilder();
XXXXXXResponse response = XXXXXXResponse.newBuilder().build();
JsonFormat format = new JsonFormat();
return format.printToString(responsE);
使用这个方法会导致 字段值是默认值的数据忽略,返回的结果缺少自己想要的值
1.如果你的项目中允许 使用其他的工具 比如阿里fastjson
2.使用下面的方法,先导入依赖
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>3.5.0</version>
</dependency>
return com.google.protobuf.util.JsonFormat.printer().includingDefaultValueFields().print(responsE);
因为使用了includingDefaultValueFields方法,所以会把所有的字段都输出,完美解决此问题!
注:使用此方法需要抛出异常,你的response对象不存在的字段时会报InvalidProtocolBufferException,此时需要使用ignoringUnknownFields
XXXXXProto.builder builder = XXXXXProto.newBuilder();
Stirng json = data;//你的json数据
JsonFormat.parser().ignoringUnknownFields().merge(json, builder);
import com.alibaba.fastjson.JSON;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.message;
import com.google.protobuf.TextFormat.ParseException;
import com.google.protobuf.util.JsonFormat;
public class ProtobufUtils {
/**
* json数据转换为pb对象
*/
@SuppressWarnings("unchecked")
public static <T> T json2pb(String json, message.builder builder) throws ParseException, InvalidProtocolBufferException {
if (builder == null) {
return null;
}
JsonFormat.parser().ignoringUnknownFields().merge(json, builder);
return (T) builder.build();
}
/**
* json数据转换为pb对象
*/
public static <T> T json2pb(Object entity, message.builder builder) throws ParseException, InvalidProtocolBufferException {
if (builder == null || entity == null) {
return null;
}
return json2pb(JSON.toJSONString(entity), builder);
}
}
以上是大佬教程为你收集整理的使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题全部内容,希望文章能够帮你解决使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。