3 回答
TA贡献1831条经验 获得超9个赞
我不得不使用有时引用数字有时不引用的 API。该服务的所有者不太可能修复它,所以我想出了一个简单的解决方法:
re := regexp.MustCompile(`(":\s*)([\d\.]+)(\s*[,}])`)
rawJsonByteArray = re.ReplaceAll(rawJsonByteArray, []byte(`$1"$2"$3`))
正则表达式有点低效,但我不相信我能够更快地实现某些东西。
TA贡献1775条经验 获得超8个赞
错误只是说您指定Distance
为带有 json 注释的字符串,但在 json 字符串中,您尝试反序列化的值没有被引用(因此不是字符串)。
解决方案很简单,将其更改json:"distance,string"
为json:"distance"
或获取与您的定义匹配的 json(意味着它在引号中具有区别,例如"Distance":"10.4"
)
鉴于错误以及您的本机 Go 类型是 float64 的事实,我建议摆脱字符串注释。
TA贡献1852条经验 获得超7个赞
func 解组状态:
要将 JSON 解组为结构体,Unmarshal 将传入的对象键与 Marshal 使用的键(结构体字段名称或其标签)进行匹配,更喜欢精确匹配,但也接受不区分大小写的匹配。
bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null
因此,float64默认情况下应该解组期望距离。但是根据标签,您要求解组到除了 Distance as string。这是缺少匹配项的数据类型。
因此,您有两个选择,要么使用float64更改距离标记,要么将距离编组为string。
- 3 回答
- 0 关注
- 223 浏览
添加回答
举报