2 回答
TA贡献1875条经验 获得超3个赞
看起来你的凭证文件是错误的(它需要使用键 application_id 和 application_key - Go 足够聪明来计算大写,但不是下划线):
{
"Username": "myUsername",
"Password": "myPassowrd",
"application_id": "someID",
"application_key": "someString"
}
TA贡献1845条经验 获得超8个赞
基于示例文件,你在 Go 中的结构应该是这样的;
type Credentials struct {
Username string `json:"Username"`
Password string `json:"Password"`
ApplicationId string `json:"ApplicationId"`
ApplicationKey string `json:"ApplicationKey"`
}
您也可以从另一端处理此问题,并将文件中的条目修改为如下所示;
{
"Username": "myUsername",
"Password": "myPassowrd",
"application_id": "someID",
"application_key": "someString"
}
但是,更常见的情况是您无法更改接收的数据(例如调用第三方 API 时),因此您通常最终会更改源。由于您控制文件并且 API 需要小写,我建议更改文件内容以匹配您发送 API 的内容。有时需要的另一个选项是使用另一种类型并提供转换帮助程序(假设您既不控制文件也不控制 API,则每个类型都需要不同的类型)。Go 编码包非常严格。您可能已经习惯了 json.NET 之类的东西,它会分配接近的匹配项,但这里的情况并非如此。任何不完全匹配的东西都会产生一个错误Unmarshal。
- 2 回答
- 0 关注
- 313 浏览
添加回答
举报
