无法读取json正文[重复]

问题描述 投票:-1回答:1

对golang很陌生,我正在尝试阅读golang中的json请求正文,但它只是转换为空字符串。

下面是我尝试通过请求json主体转换为的结构

type SdpPost struct {
    id string
    sdp string
}

func (s *SdpPost) Id() string {
    return s.id
}

func (s *SdpPost) SetSdp(sdp string) {
    s.sdp = sdp
}

func (s *SdpPost) Sdp() string {
    return s.sdp
}

[当我尝试打印以下代码片段时,我确实看到了我通过邮递员传递的json请求正文

Dumping the json POST /v1/sdp HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 62
Content-Type: application/json
Postman-Token: 5f0f9961-f058-446a-86e8-7f047c1dc5cc
User-Agent: PostmanRuntime/7.24.1

{
        "sdp":"This is the test sdp",
        "id":"This is the test id"
}

但是下面的代码什么也不打印,它只是Id和sdp的空字符串

    r.Header.Set("Content-Type", "application/json")
    decoder := json.NewDecoder(r.Body)
    sdp := handler.SdpPost{}
    decoder.Decode(&sdp)
    w.WriteHeader(http.StatusOK)
    fmt.Print(sdp.Id())
    fmt.Println(sdp.Sdp())

我在某处缺少什么吗?我从字面上搜索每个地方,这几乎被使用了。

rest go post postman
1个回答
1
投票

问题是SdpPost字段未导出,因此json解码器看不到它们,您可以这样解决:

type SdpPost struct {
    Id string
    Sdp string
}
© www.soinside.com 2019 - 2024. All rights reserved.