我正在编写一个gRPC服务,它从这个API中获取给定日期范围内的汇率,并且响应是按天划分的,您可以在这里看到响应格式。
要解析这个响应,我需要一个带有类似
字段的原型消息map<string, map<string, float>>
但是proto不允许定义嵌套映射。有一些解决方案可以使用映射字段创建另一个消息,但是在我的例子中,内部映射是通用的。因此,我不能定义另一个消息。
在proto3中有一种定义通用嵌套映射的方法吗?
这个定义应该起作用:
syntax = "proto3";
package open.exchange.v1;
option go_package = "github.com/my_open_exchange";
// Rates define a generic Rates for a currency
// The key of the map is the related currency, the value
message Rates {
map<string, float> Rate = 1;
}
// TimeSeriesRates define a Rate of a currency for a specific date
// The key is the date, the value the related map of rates
message TimeSeriesRates {
map<string, Rates> Rate = 1;
}
// TimeSeriesResponse is the response of the TimeSeries endpoint
message TimeSeriesResponse {
string start_date = 1;
string end_date = 2;
string base = 3;
TimeSeriesRates rates = 4;
}