如何读取json格式的数据?
我有一个函数,其中我必须以json格式将数据发布到url。当我发送数据时,它将以json给出响应。但在那里,我会看到:- 由代码给出的输出如何读取json格式的数据?,json,go,Json,Go,我有一个函数,其中我必须以json格式将数据发布到url。当我发送数据时,它将以json给出响应。但在那里,我会看到:- 由代码给出的输出 &{200 OK 200 HTTP/1.1 1 1 map[Content-Type:[application/json] X-Request-Id:[CgiFzq669pAYzRABGBAiCQiRtaznvJffAg] Keep-Alive:[timeout=60] Vary:[Accept-Encoding] X-Content-Typ
&{200 OK 200 HTTP/1.1 1 1
map[Content-Type:[application/json] X-Request-Id:[CgiFzq669pAYzRABGBAiCQiRtaznvJffAg]
Keep-Alive:[timeout=60]
Vary:[Accept-Encoding]
X-Content-Type-Options:[nosniff]
X-Download-Options:[noopen]
X-Permitted-Cross-Domain-Policies:[none]
Strict-Transport-Security:[max-age=631152000]
X-Frame-Options:[DENY]
X-Xss-Protection:[1; mode=block]
Date:[Tue, 11 Dec 2018 09:35:22 GMT]
Access-Control-Allow-Headers:[Content-Type, Authorization, Accept]
Access-Control-Allow-Origin:[*]
Access-Control-Expose-Headers:[Link]] 0xc420442080 -1 [] false true map[] 0xc42023e100 0xc4200e0d10}
代码是:-
func Token(c *gin.Context) {
code := c.Query("code")
responseToken :=TokenResponse{}
token := models.PostToken{
ClientID: "appllication Id",
ClientSecret: "applicationSecreteId",
Code: "code",
RedirectUri: c.Request.Host + c.Request.URL.RequestURI(),
}
bindData, err := json.Marshal(token)
if err != nil {
panic(err)
}
var jsonStr = []byte(string(bindData))
url :="https://connect.squareup.com/oauth2/token"
req, err := http.Post(url, "application/json", bytes.NewBuffer(jsonStr))
fmt.Println(req, err)
}
type TokenResponse struct {
Token string `json:"access_token"`
Type string `json:"token_type"`
ExpiresAt string `json:"expires_at"`
MerchantId string `json:"merchant_id"`
}
预期产出:-
{
"access_token": "token",
"token_type": "bearer",
"expires_at": "2019-01-10T08:20:59Z",
"merchant_id": "id"
}
但当我在postman中点击“”url时,它会给我json,但在golang代码中,它不会显示任何json,它会返回上述数据。有人能告诉我如何从上面的响应中获取json数据吗?试试这个
respBody, Err := ioutil.ReadAll(req.Body)
fmt.Println(string(respBody))
var temp TokenResponse
err := json.Unmarshal(respBody, &temp)
您必须像这样读取响应数据:
body, err := ioutil.ReadAll(req.Body)
response := map[string]interface{}
json.Unmarshal(body,&response)
然后,一旦有了respBody,就创建一个结构来解码它并执行
json.Unmarshall(respBody,jsstruct)
@arcteezy它不会使用给定的结构进行封送,请参见代码中的内容。您可以将内容解组到一个映射中,然后使用密钥s对其进行解码。@arcteezy请提供一个小示例它不会使用给定的结构封送,请参见代码中的内容