在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、参数校验问题 使用go做web服务时,经常需要对请求参数进行校验,有些必填参数需要校验是否为空。 经常会遇到参数a为int类型,但是其值取值范围为0-xxx。0也是有意义的。 即参数a如果传0也算传参了,但是go中传0会被认为是没有传,无法通过校验,导致出现问题。 目前的解决方法是将请求参数类型设置为*int,即int指针。这样做就可以对a做nil判断。 传0之后其指针不会为nil,可以通过校验。 二、json解析问题 假设我们收到二进制数据,需要用json.UnMarshal解析成结构体,结构体类型为interface。 如果二进制数据类型为int的话,会被解析成float类型,因为go认为所有数值类型都是float类型。 需要使用json.NewDecoder对象 decoder := json.NewDecoder(bytes.NewReader(respData))
decoder.UseNumber()
err = decoder.Decode(resp)
调用UseNumber之后,再调用Decode解析 将解析出来的对象转换成json.Number,然后调用String方法转成字符串,然后使用strconv.AtoI将其转为int。 需要转换成int64的话也可以调用json.Number的Int64方法转成int64 三、待补充 |
请发表评论