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

简介

业务层用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(), &params),params是key-value映射的一个map集
合。

出现问题

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

处理问题

  1. 考虑到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)
  2. 字符串拼接的时候莫名其妙的换行
    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,如下图:

    这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值