如何在 ProtoBuffers 3 中建模 map<string, map<string, int>>
How to model map<string, map<string, int>> in ProtoBuffers 3
我正在使用 Go 实现一个 API 端点,该端点应该 return 数据如下所示:
{
"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;
}
因此,您必须按如下方式修改您的 return 数据,
{
"object1s": [
{
"object2": {
"key1": {
"object3": {
"key3": 1,
"key4": 2
}
}
}
}
]
}
参考:Issue#4596
我正在使用 Go 实现一个 API 端点,该端点应该 return 数据如下所示:
{
"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;
}
因此,您必须按如下方式修改您的 return 数据,
{
"object1s": [
{
"object2": {
"key1": {
"object3": {
"key3": 1,
"key4": 2
}
}
}
}
]
}
参考:Issue#4596