Python合并pandas导出的JSON字符串时如何消除多余转义反斜杠
问题根源
你遇到的转义反斜杠是重复JSON序列化导致的:object1()、object2()已经将数据序列化为JSON字符串,你把字符串直接存入字典再做一次json.dumps()时,序列化逻辑会把字符串内部的双引号当做普通字符转义,所以才会出现大量\。
另外你的代码还有两处低级错误:
- 调用函数漏加括号:
item1 = object1是把函数对象赋值给变量,不会拿到返回结果,要写成item1 = object1() - 方法名写错:
json_dumps是json模块的方法,正确写法是json.dumps()
解决方案
方案1(最推荐):统一做序列化
不要在object1、object2里提前做JSON序列化,直接返回pandas对象转成的Python原生结构(字典/列表),最后统一序列化:
import pandas as pd import json def object1(): df = pd.DataFrame() # 你的计算逻辑,data是要存入df的数据 df = df.append(data, True) # 直接返回Python字典/列表,不序列化 return df.to_dict(orient='records') # orient参数根据你需要的JSON结构调整,可选'index'/'columns'等 def object2(): # 逻辑和object1一致,返回原生Python结构 pass def to_json_object(): # 调用函数拿原生结构 item1 = object1() item2 = object2() json_data = {'object1':item1, 'object2':item2} # 统一做一次序列化 return json.dumps(json_data)
方案2:无法修改object1/object2返回值时用
如果object1、object2的返回逻辑不能改,必须返回JSON字符串,那你就先把序列化的字符串反序列化为Python原生结构,再放入字典统一序列化:
import json def to_json_object(): # 先调用函数拿到JSON字符串,再反序列化为Python对象 item1 = json.loads(object1()) item2 = json.loads(object2()) json_data = {'object1':item1, 'object2':item2} return json.dumps(json_data)
两种方案都可以完全消除多余的转义反斜杠。
内容的提问来源于stack exchange,提问作者SupernovifieD
相关产品推荐
相关产品推荐

