您的位置:首页 > 编程语言 > Go语言

Go语言开发问题记录【01】

2017-06-07 13:13 323 查看

简介

业务层用Java开发,路由由go语言的gateway模块进行分配转发。因为对Go不熟悉,直接要用什么去看API操作,固碰到了很多问题。

实际场景

接受他人的航班信息推送,POST请求,推送Body格式为

Notify=PEKCAN\tCZ3162\t94.9\t北京首都\t广州白云\tT2\tT2\t2015-07-17 14:30:00\t2015-07-17 17:45:00\t0001-01-01\t0001-01-01\t计划\nPEKCAN\tCZ3162\t94.9\t北京首都\t广州白云\tT2\tT2\t2015-07-17 14:30:00\t2015-07-17 17:45:00\t0001-01-01\t0001-01-01\t计划

Request 进入我们的gateway,得到body对应的字节数组,把字节数组转成json格式,设置到outReq的Body,方便后续的json.Unmarshal(outReq.Body(), ¶ms),params是key-value映射的一个map集

合。

出现问题

json.Unmarshal方法执行错误, outReq.Body()内容不合法 * 这里因为是自己对异常进行的输出说明,没有打印err,导致了定位问题的偏差,是问题解决耗时的主要源头之一。

处理问题

考虑到json解析转义字符可能出现问题,替换了\t,\n,

strings.Replace(bodyStr,”\n”,”;”,-1)

strings.Replace(bodyStr,”\t”,”,”,-1)

因为没有赋值回去,导致bodyStr未改变,需改如下:

bodyStr = strings.Replace(bodyStr,”\n”,”;”,-1)

bodyStr = strings.Replace(bodyStr,”\t”,”,”,-1)

字符串拼接的时候莫名其妙的换行

var buffer bytes.Buffer

buffer.WriteString(“{\”notify\”:\”“)

buffer.WriteString(bodyStr)

buffer.WriteString(“\”}”)

每次”}都是另起一行,输出err后,说\r 是非法字符 ,改成

buffer.WriteString(strings.TrimSpace(bodyStr))后问题解决

关于TrimSpace方法,https://github.com/astaxie/gopkg/blob/master/bytes/TrimSpace.md,如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: