为什么json转化有斜杠_json中⼤量反斜杠问题
今天给测试写⼀个第三⽅平台的mock服务,在通讯调试中发现⼀个问题,不管是被测服务本⾝的⽇志还是我这边打印的⽇志,在打印报⽂json 时都出现了⼤量的反斜杠,感觉有点诡异。然后在⽹上查了下,很快弄明⽩了。
⼀般来说⼀个json序列如果包含较多层的信息,那么我们应该期望这些信息应该是由基本数据类型递归地形成⼀个个⼦json对象,并最终汇集成⼀个最终的json对象。然⽽在出现多余斜杠的json序列中,⼀部分json⼦对象没有以⼦对象的形式存在,⽽是以⼀个 表达json对象的字符串 的形式存在,从内容上来说我们认为它是⼀个⼦对象,然⽽数据上来说它是⼀个字符串,由于这个字符串表达了⼀个 json 序列,于是这个字符串中会存在双引号,因此为了在字符串中表达双引号这个字符,它在打印时被携带了前置的转义反斜杠。特别是像我碰到的,这样的情况出现了多层,于是就会出现1个3个7个的反斜杠,看得⼈脑壳冒烟。回头去看了下我们这头的源码,发现在组包环节 put jsonObj 时⼤量使⽤了 toJSONString。Boom。最后由于这是⼀个已经上线的业务,没法马上改过来,于是只能在 mock ⾥简单地递归转化⼀下内容来适配现状。
def jsonObj2str(json_obj):
for key in json_obj.keys():
if type(json_obj[key])== type({}):
json_obj[key] = jsonObj2str(json_obj[key])
return(json.dumps(json_obj,ensure_ascii=False))json转换对象
事情其实不是特别复杂,但是这⾥反映出的问题很值得思考。⾸先,从技术上讲ÿ
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论