Python 包含介于两者之间的“\\\”的JSON数据

Python 包含介于两者之间的“\\\”的JSON数据,python,json,http,flask,Python,Json,Http,Flask,我有一个作为Flask应用程序编写的python侦听服务器。该服务器正在侦听来自远程源的POST消息。远程源正在发布JSON文档。我收到的JSON文档示例如下所示 { "Timestamp": "1432241553492", "data": "[{\"EventName\":\"Time\",\"Category\":\"Experience\",\"Severity\":\"warn\",\"Subject\":\"Time\",\"Message\":\"details:

我有一个作为Flask应用程序编写的python侦听服务器。该服务器正在侦听来自远程源的POST消息。远程源正在发布JSON文档。我收到的JSON文档示例如下所示

{

    "Timestamp": "1432241553492",
    "data": "[{\"EventName\":\"Time\",\"Category\":\"Experience\",\"Severity\":\"warn\",\"Subject\":\"Time\",\"Message\":\"details:{\\\"Message\\\":\\\"https://xxxx.xxxxx.com/ (1882 ms : ATime: 5 ms, BTime: 1108 ms, CTime: 769 ms), \\\",\\\"Time\\\":\\\"Fri May 22 2015 08:52:33 GMT+1200 (NZST)\\\",\\\"MobileDevice\\\":\\\"Not Mobile\\\",\\\"User\\\":\\\"user.name\\\",\\\"CPUs\\\":8,\\\"Language\\\":\\\"en-GB\\\",\\\"isEvent\\\":\\\"true\\\",\"Stamp\":\"1432241553492\"}]",
    "msgType": "0",
    "tid": "1"
}
这个文件应该是一个正确的JSON文件。但是我在上面显示的字段之间得到了
\\\\
。我想知道我的侦听服务器中的Http选项设置或者数据类型是否有问题。
如果有人能帮我弄明白,那就太好了。

乍一看,你的JSON文件似乎有问题;有一个杂散的
,“
序列破坏了格式

如果您删除了条目,很可能是您破坏了格式;如果您的实际字符串在上进行了验证,那么您就是这样做的

反斜杠是JSON中有效的转义序列。您的数据包含其他JSON字符串,而这些字符串又包含更多编码的JSON数据。您可以递归解码这些数据:

>>> import json
>>> print json.dumps({'object': 'deeply nested'})
{"object": "deeply nested"}
>>> print json.dumps({'wrapper': json.dumps({'object': 'deeply nested'})})
{"wrapper": "{\"object\": \"deeply nested\"}"}
>>> print json.dumps({'outermost': json.dumps({'wrapper': json.dumps({'object': 'deeply nested'})})})
{"outermost": "{\"wrapper\": \"{\\\"object\\\": \\\"deeply nested\\\"}\"}"}
请注意,随着包装级别的增加,反斜杠也会增加。首先,嵌入的
引号转义到
\”
,然后转义反斜杠和引号,转义到
\\”
,等等

您可能需要修复生成此嵌套的代码。不要对单个对象进行编码,然后将它们存储在其他对象中

不要这样做:

这将创建一个嵌套结构。仅对最终对象进行编码:

event['details'] = event_detail_data
message['data'] = event
json_to_send = json.dumps(message)

我听说你喜欢json,所以我把json放在json中的json中了?另外,
details:
部分无效(没有引用键
details
),你确定这就是输出吗?那就错了。你的JSON不是有效的。@liv2hak:反斜杠在JSON字符串对象中是有效的转义符,但是你有一个没有转义的引号,它打断了整个过程。“这真是一团糟!”马丁·皮特斯(Martin Pieters)——有没有办法把它转换成更人性化的格式。源中的原始数据没有`\\``。但是数据是一样的。@liv2hak:那么你是如何对数据进行编码的呢?不要对单个片段进行编码,只将最终的字典编码为JSON。你还没有告诉我们你是如何生成这个对象的。我无法控制JSON是如何创建的。不过,我必须在最后对它进行解码。
event['details'] = event_detail_data
message['data'] = event
json_to_send = json.dumps(message)