Python 避免双重编码json

Python 避免双重编码json,python,json,pandas,Python,Json,Pandas,我试图在另一个json响应中包装一个熊猫数据帧。您可以在下面看到,我使用to_json()创建job.result。但当我将它与其他json项包装在一起时,它要么因为是dict而不序列化,要么对pandas对象编码两次。如何使用其他json项包装pandas项而不使用双重编码?我曾考虑使用to_dict()而不是to_json(),但后来遇到了日期格式问题 job.result = result.to_json(date_format='iso') data = { 'status':

我试图在另一个json响应中包装一个熊猫数据帧。您可以在下面看到,我使用to_json()创建job.result。但当我将它与其他json项包装在一起时,它要么因为是dict而不序列化,要么对pandas对象编码两次。如何使用其他json项包装pandas项而不使用双重编码?我曾考虑使用to_dict()而不是to_json(),但后来遇到了日期格式问题

job.result = result.to_json(date_format='iso')

data = {
    'status': job.get_status(),
    'result': job.result,
}
response = make_response(data)
response.mimetype = 'application/json'
return response
在pandas to_json上执行一些操作,该函数将返回json对象的字符串表示形式,而不是实际的json对象

如果您的目的是将其作为实际对象的一部分而不是一个字符串发送,那么我会在发送它之前对其进行解析,也称为:
job.result=JSON.parse(result.to_JSON(date\u format='iso'))

编辑:因为我是在javascript而不是python的上下文中回答的,
json.loads(result.to_json(date_format='iso'))
是OP最终使用的python解决方案。

对pandas to_json执行一些操作,该函数返回json对象的字符串表示,而不是实际的json对象

如果您的目的是将其作为实际对象的一部分而不是一个字符串发送,那么我会在发送它之前对其进行解析,也称为:
job.result=JSON.parse(result.to_JSON(date\u format='iso'))


Edit:因为我是在javascript而不是python的上下文中回答的,
json.loads(result.to_json(date_format='iso'))
是OP最终使用的python解决方案。

什么是
使_响应
返回的,以及如何访问其负载?抱歉。make_响应是从flask导入的,使我能够返回一个常规字符串作为json。它与flask的jsonify相同。你能解释一下吗?:“但是当我用其他json项包装它时,它或者不会序列化,因为它是一个dict,”dict是可序列化的。。。另外,当你说编码时,你的意思是什么?什么是
make_response
返回,以及如何访问它的有效负载?对不起。make_响应是从flask导入的,使我能够返回一个常规字符串作为json。它与flask的jsonify相同。你能解释一下吗?:“但是当我用其他json项包装它时,它或者不会序列化,因为它是一个dict,”dict是可序列化的。。。还有,当你说编码时,你是什么意思?是的,我知道它返回一个字符串。我想我的问题是如何将数据变量中的其余内容转换为字符串?你认为这比解析它容易吗?我想这取决于你想要的最终表示形式-客户端的
数据。result
应该给出json的字符串表示形式,或者json本身?如果你只是想用json代表字符串来围绕它,那么总是可以选择这样做,
data='{'status\':'+job.get\'status()+',\'result\':'+job.result+'}'
,这将为客户端提供原始json对象,或者只是在job.result周围插入一组以保留字符串。实际上,您的方法是正确的!我使用了json.loads(result.to_json(date_format='iso'))并在数据对象中进行了很好的格式化。非常感谢。是的,我知道它返回一个字符串。我想我的问题是如何将数据变量中的其余内容转换为字符串?你认为这比解析它容易吗?我想这取决于你想要的最终表示形式-客户端的
数据。result
应该给出json的字符串表示形式,或者json本身?如果你只是想用json代表字符串来围绕它,那么总是可以选择这样做,
data='{'status\':'+job.get\'status()+',\'result\':'+job.result+'}'
,这将为客户端提供原始json对象,或者只是在job.result周围插入一组以保留字符串。实际上,您的方法是正确的!我使用了json.loads(result.to_json(date_format='iso'))并在数据对象中进行了很好的格式化。非常感谢。