每日热文:记一次排查:接口返回值写入excel后,从单元格copy出来的数据会带有多重引号的问题
在项目里刚好有3个服务,同一个网关内层的3个服务,两个php的,一个golang的,为了提高负载以及进行分流,部分客户的接口调用会被网关自动分配到go服务。
(相关资料图)
恰好为了测试,我写了一个全量用户的生产、测试环境调用接口返回结果进行对比的脚本,于是发现了题中的问题:两个php服务里的接口返回值写入xlsx后,直接copy出来是正常的json串,golang的接口返回值copy出来变成双重引号如图
排查过程:
1、先通过python的requests请求接口直接打印出返回值,看看是否是两个双引号,结果发现php跟go服务都是正常的json串。
2、继续排查,猜想问题会不会出现编码传输格式上,于是对比php跟go接口响应标头。
php服务响应头如下:
go服务应头如下
go跟php响应头的差别只在于两点:php多了TimeStamp,Content-Type里面多了charset=utf-8。
首先排除TimeStamp,从名称上就可以看出来不会对返回值格式或内容有任何影响;
然后尝试用flask编写两个接口,Content-Type里面分别为application/json、application/json; charset=utf-8,写入excel后发现并没有任何不同。
3、响应头也没问题,继续猜想会不会是go服务代码缺陷,接口在return response之前并没有序列化,而是直接返回了object对象?
我们先了解一个概念:序列化与反序列化。
序列化是把程序对象转换为字节序列的过程,反序列化就是把字节序列恢复为程序对象的过程。
因为不同的客户端、服务端可能使用的语言不同,为了兼容都是用序列化之后的数据进行传输,比如前端js将页面参数序列化之后传递给后端java服务。
开始实验,本地flask直接返回字典{"username": username, "password": password},写入excel的居然真的出现了两个双引号。
4、于是让开发排查代码里是不是没有作序列化,但是出人意料的是,go代码里是做了序列化才返回的。
所以上面的猜想都不成立,研究一度陷入僵局,直到...
5、偶然注意到copy出来的返回值尾巴上有个莫名其妙的换行。
根据以前经常写json数据入csv、xlsx文件的经验,就算是格式化后加了多个引号的json数据(例如pandas的to_csv方法里的quoting参数即可控制是否加引号),也不可能加换行符。
所以猜想会不会是返回值多了个隐形的换行符,然后在pacharm的cmd里调一下接口看看,果然go服务返回体尾巴上换行了,而php则不会
6、于是在写入excel之前把返回值rstrip()一下做最后的确认,结果从excel复制出来的数据真的没有多重引号了。
至此,揪出来这个go服务的bug!
-
每日热文:记一次排查:接口返回值写入excel后,从单元格copy出来的数据会带有多重引号的问题
博客园 2023-05-18
-
全球观焦点:凯文教育(002659)5月18日主力资金净卖出468.44万元
证券之星 2023-05-18
-
中环环保:河北承德项目投产后公司垃圾焚烧发电业务处理规模可达3500吨/日
界面新闻 2023-05-18
-
天天快资讯:省法院通报表扬环资审判先进集体和先进个人
湖北日报 2023-05-18
-
最新资讯:中通快递一季度净利增八成:上调全年业务量指引,旺季单量料创新高
澎湃新闻 2023-05-18
-
中亚五国留学生共话中国—中亚峰会-世界实时
人民网 2023-05-18
-
【东海期货5月18日产业链日报】贵金属篇:拜登传递乐观信号,金银震荡
汇金网 2023-05-18
-
支付宝基金收益是一天一结吗 收益什么时候更新
探其财经网 2023-05-18
-
店铺風水财位图解 观察店铺的流动和能量
互联网 2023-05-18
-
每日汇市|持续贬值!人民币中间价调贬219基点报6.9967,创2022年12月7日以来新低|全球视点
北京商报 2023-05-18
-
每日热文:记一次排查:接口返回值写入excel后,从单元格copy出来的数据会带有多重引号的问题
博客园 2023-05-18
-
全球观焦点:凯文教育(002659)5月18日主力资金净卖出468.44万元
证券之星 2023-05-18
-
中环环保:河北承德项目投产后公司垃圾焚烧发电业务处理规模可达3500吨/日
界面新闻 2023-05-18
-
天天快资讯:省法院通报表扬环资审判先进集体和先进个人
湖北日报 2023-05-18
-
最新资讯:中通快递一季度净利增八成:上调全年业务量指引,旺季单量料创新高
澎湃新闻 2023-05-18
-
中亚五国留学生共话中国—中亚峰会-世界实时
人民网 2023-05-18
-
【东海期货5月18日产业链日报】贵金属篇:拜登传递乐观信号,金银震荡
汇金网 2023-05-18
-
支付宝基金收益是一天一结吗 收益什么时候更新
探其财经网 2023-05-18
-
店铺風水财位图解 观察店铺的流动和能量
互联网 2023-05-18
-
每日汇市|持续贬值!人民币中间价调贬219基点报6.9967,创2022年12月7日以来新低|全球视点
北京商报 2023-05-18
-
深圳北理莫斯科大学与罗湖区合作举办深圳市美术学校 世界今亮点
本地宝 2023-05-18
-
湖北开工2034个亿元以上重大项目,总投资1.1万亿元
我的钢铁网 2023-05-18
-
百合喜阳还是喜阴 百合花喜欢阳光还是阴暗|天天百事通
伊秀经验网 2023-05-18
-
全球今头条!赣锋锂业(002460)5月17日主力资金净卖出1.33亿元
证券之星 2023-05-18
-
万里扬(002434.SZ):已在广东、甘肃等省份投运4个发电侧储能电站 合计装机约40MW 快讯
格隆汇 2023-05-18
-
瑶族档案文化对外传播路径研究_关于瑶族档案文化对外传播路径研究介绍|世界报道
十分生活网 2023-05-18
-
如何接近自己渴望的人生?_焦点短讯
管理系统建设专家 2023-05-18
-
【环球聚看点】邓州一高培优合作等多个项目签约
健康饮食科普 2023-05-18
-
天天动态:2023年冰淇淋龙头有哪些(5月17日)
南方财富网 2023-05-18
-
铃木启悦6at变速箱型号_长安铃木启悦变速箱油多久更换?
互联网 2023-05-18
-
环球微头条丨古代人如何制冰(古代如何制冰)
互联网 2023-05-17
-
滕州梁场区域棚改开始了,搬家腾房ing... 世界快播报
滕州生活圈 2023-05-17
-
倒车入库技巧图解 6个步骤要掌握_劈多块砖技巧图解
互联网 2023-05-17
-
全球快播:相约“鼓楼之夜”!这场中东欧优品展等你来逛
潮新闻 2023-05-17
-
拜仁官方:穆勒回归训练,索默因肠胃不适缺席训练
直播吧 2023-05-17
-
热头条丨CPI阶段性回落受多因素影响 未来几个月将低位窄幅波动
第一财经 2023-05-17
-
金冠电气:中标邓州市电动汽车充电基础设施建设项目
大河财立方 2023-05-17
-
每日热文:中国银行开平支行原行长许国俊贪污、挪用公款案一审开庭 挪用公款人民币3.55亿余元
北京商报 2023-05-17
-
5月17日中国黄金发生5笔大宗交易 成交金额1.63亿元
证券之星 2023-05-17
-
爱音麻友种子_爱音麻友
科学教育网 2023-05-17