后端的protobuf的java类转换JSON传输到前端Dart后转protobuf的dart类读取
这个是我自己踩过的坑之一。因为某些场景中需要直接把.proto生成的java类包装成JSON通过HTTP请求返回给Dart。但是我试了很多种方式,发现都会出现奇怪的错误,但是网上没找到比较好的解决方法。
最后还是自己各种尝试后,试出来了一种可以在Dart识别出JSON中的proto类的数据的方式。
不过,这种场景终究是少数情况。我这里protobuf除这个情况以外都是用UDP数据报传输的,然后再字节数组转proto类。
这篇文章在"我的github笔记-Netty-个人Netty实战笔记"也是有的
我自己试过用protobuf转JSON的protobuf-java-format
和protobuf-java-util
来将protobuf转成JSON然后传输到Dart。而且其实protobuf生成的Java类的toString(),我自己打印到控制台,看着也是JSON格式的。这几种JSON的方式我都试过了,但是直接这么JSON后传到Dart都会出现一些奇怪的错误。再者也试过一些其他的操作,这里不一一列举,最后还是转成UTF-8编码的String传输得以成功。
出现的错误比如有:Protocol message end-group tag did not match expected tag
、Protocol message tag had invalid wire type.
等。<