我如何通过json体请求api在地图字符串数据结构在Golang?



我对golang和grpc不熟悉,需要指导和澄清。我下面定义了一个参数,用于调用外部API的POST请求。

params := map[string]string{
"movie":       movie,
"seat":         seat,
"pax": fmt.Sprint(pax),
"class":      class,
}

在proto文件中,我有如下:

message TicketData {
string movie= 1;
string seat= 2;
uint32 pax= 3;
string class = 4;
}
message SearchMovieRequest {
TicketData data= 1;
}

然而,在POSTMAN (grpc请求)中,请求体如下所示:

{
"data": 
{
"movie": "abc",
"seat": "123",
"pax": 2,
"class ": "b""
}

}

请求正文应该在下面:

{
"data": **[**
{
"movie": "abc",
"seat": "123",
"pax": 2,
"class ": "b""
}
**]** - missing brackets in my json body
}

我已经尝试使用structpb和映射字符串接口。这似乎行不通。任何指示将不胜感激。谢谢你。

您希望data字段为repeated TicketData

参见《Protobuf语言指南(proto3)》中的指定字段规则。

专:

message TicketData {
string movie= 1;
string seat= 2;
uint32 pax= 3;
string class = 4;
}
message SearchMovieRequest {
repeated TicketData data= 1;
}

注意尽管您包含了protobuf定义,但您的示例是JSON。Protobuf实现通常包括Protobuf和JSON之间的自动映射,我想这就是你所展示的。

相关内容

最新更新