我正在使用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
的正确方法是什么?
分析解答
尚不支持您所需的方式。
现在,唯一的方法就是创建一个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
}
}
}
}
]
}
参考:问题#4596