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,如下图:
相关文章推荐
- 微信公众号开发问题记录_01
- .netTier开发问题记录-01
- Scala IDE for Eclipse 之spark scala语言开发环境搭建------遇到问题记录
- 谷歌眼镜开发Mirror API之Go语言开发
- Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)
- Go语言开发
- android开发问题记录
- vim配置go语言语法高亮问题的解决方法
- Cocos2DX开发:记录遇到的一些问题和解决方法
- 多语言开发常见问题
- Android学习开发中碰到的问题记录
- iOS程序员混合开发问题记录
- android源码编译与开发:问题记录
- Centos7 安装go语言开发环境
- 微信网页开发weixin://preInjectJSBridge/fail、分享描述失效问题记录
- 安装 go 语言开发环境(ubuntu 16.04)
- Go语言开发工具 LiteIDE0.1.6 released .
- 安卓开发问题记录
- Android开发小问题记录