我使用Go来实现一个API端点,该端点应该返回如下所示的数据:
{
"object1s": [
{
"object2": {
"key1": {
"key3": 1,
"key4": 2,
"key5": 3
},
"key2": {
"key3": 4,
"key4": 5,
"key5": 6
}
}
},
{
"object2": {
"key1": {
"key3": 7,
"key4": 8,
"key5": 9
},
"key2": {
"key3": 10,
"key4": 11,
"key5": 12
}
}
}
]
}我如何用proto3来建模呢?
我有这个:
message SubObject {
map<string, map<string, int32>> object2 = 1;
}
message ResponseMessage {
repeated SubObject object1s = 1;
}但我认为语法map<string, map<string, int>>是无效的。那么,描述SubObject的正确方法是什么呢?
发布于 2020-09-23 09:00:08
你想要的方式还不被支持。
现在,唯一的方法是创建一个message类型来保存内部map字段。
message InnerObject {
map<string, int32> object3 = 1;
}
message SubObject {
map<string, InnerObject> object2 = 1;
}
message ResponseMessage {
repeated SubObject object1s = 1;
}因此,您必须修改您的返回数据如下,
{
"object1s": [
{
"object2": {
"key1": {
"object3": {
"key3": 1,
"key4": 2
}
}
}
}
]
}参考资料:Issue#4596
https://stackoverflow.com/questions/64022996
复制相似问题