后端的protobuf的java类转换JSON传输到前端Dart后转protobuf的dart类读取

这篇博客分享了作者在后端Java使用protobuf生成的类转换为JSON,然后通过HTTP传输到前端Dart,再将JSON转换回protobuf Dart类过程中遇到的挑战和解决方案。在尝试多种方法失败后,作者发现将protobuf数据转换为UTF-8编码的String进行传输才能成功避免错误。
摘要由CSDN通过智能技术生成

后端的protobuf的java类转换JSON传输到前端Dart后转protobuf的dart类读取

这个是我自己踩过的坑之一。因为某些场景中需要直接把.proto生成的java类包装成JSON通过HTTP请求返回给Dart。但是我试了很多种方式,发现都会出现奇怪的错误,但是网上没找到比较好的解决方法。

最后还是自己各种尝试后,试出来了一种可以在Dart识别出JSON中的proto类的数据的方式。

不过,这种场景终究是少数情况。我这里protobuf除这个情况以外都是用UDP数据报传输的,然后再字节数组转proto类。

这篇文章在"我的github笔记-Netty-个人Netty实战笔记"也是有的

​ 我自己试过用protobuf转JSON的protobuf-java-formatprotobuf-java-util来将protobuf转成JSON然后传输到Dart。而且其实protobuf生成的Java类的toString(),我自己打印到控制台,看着也是JSON格式的。这几种JSON的方式我都试过了,但是直接这么JSON后传到Dart都会出现一些奇怪的错误。再者也试过一些其他的操作,这里不一一列举,最后还是转成UTF-8编码的String传输得以成功。

​ 出现的错误比如有:Protocol message end-group tag did not match expected tagProtocol message tag had invalid wire type.等。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值