登录
首页 >  Golang >  Go问答

在 Golang 中如何将 JSON 请求正文传递给地图字符串数据结构中的 API?

来源:stackoverflow

时间:2024-02-20 13:30:26 302浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《在 Golang 中如何将 JSON 请求正文传递给地图字符串数据结构中的 API?》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我是 golang 和 grpc 的新手,需要指导和澄清。我将以下定义作为参数来调用外部 api 的 post 请求。

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

在原型文件中,我有以下内容:

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 Language Guide (proto3) 中的 Specifying Field Rules

具体:

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 之间的自动映射,我想这就是您所展示的。

理论要掌握,实操不能落!以上关于《在 Golang 中如何将 JSON 请求正文传递给地图字符串数据结构中的 API?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>