2 回答
TA贡献1827条经验 获得超8个赞
我看到 json 无效,但问题是传递 media_ids 参数时出错。响应是:"errors":[{"code":44,"message":"media_ids 参数无效。"}] 我虽然在格式上出错,但它与没有将 media_ids 类型 int64 转换为正确的字符串。这是固定代码:
data, err := ioutil.ReadFile(fileName)
if err != nil {
fmt.Println(err)
}
mediaResponse, err := api.UploadMedia(base64.StdEncoding.EncodeToString(data))
if err != nil {
fmt.Println(err)
}
v := url.Values{}
v.Set("media_ids", strconv.FormatInt(mediaResponse.MediaID, 10))
result, err := api.PostTweet(posttitle, v)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(result)
}
TA贡献1858条经验 获得超8个赞
这不是有效的 json:
tweet := `
"media_ids": 612877656984416256,
"status": "hello"
`
尝试使用它来生成您的 json:
type Tweet struct {
MediaIds uint64 `json:"media_ids"`
Status string `json:"status"`
}
tweet := Tweet{612877656984416256, "hello"}
b, err := json.Marshal(tweet)
这导致:
{"media_ids":612877656984416256,"status":"hello"}
与使用原始字符串相比,这有一些好处。
它更以 Go 为中心。该结构可以通过设置的值传递,并通过在编译时捕获的正确类型检查来读取。
生成的 json 字符串在语义上更有可能是正确的。例如,Go 也会对某些字符进行转义,以帮助确保接收器正确解析它们。
- 2 回答
- 0 关注
- 182 浏览
添加回答
举报