
proto3双维数组转换map的解决方案
proto3不支持多维数组。但其well-known types中的value、listvalue、struct支持任意json。多维数组可以用嵌套的listvalue实现,但数组结构无法在proto文件中体现。
在给出的示例中,viper可能无法自动处理以下结构:
type configreply_array2d struct {
innerarray []*configreply_toolitem `protobuf:"bytes,1,rep,name=inner_array,json=innerarray,proto3" json:"inner_array,omitempty"`
}因为proto3没有多维数组类型,innerarray错误地被转换成了map。
解决方案是使用well-known types:
message Array2D {
ValueArray value_array = 1;
}其中,valuearray是一个任意json数组的proto表示。在go代码中,valuearray会被转换为[]interface{}类型。你可以自己遍历和处理这个数组。
需要注意的是,使用well-known types后,proto文件中tool_item message的结构将丢失。
以上就是Proto3 如何处理双维数组?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号