Python中是深度json解析吗?

问题描述 投票:0回答:2

我有下一个代码:

import json
string = b'{"campaign_id":6,"email":"[email protected]","time":"2024-01-26T06:05:59.852155Z","message":"Submitted Data","details":"{\\"payload\\":{\\"__RequestVerificationToken\\":[\\"CfDJ8EfyW-fedawawdawdwadwadwawadawd-6xqg_ZIdEJBpbAHkDQdNM\\"],\\"__original_url\\":[\\"https://test-test-test.ru/\\"],\\"password\\":[\\"test\\"],\\"qwe\\":[\\"Gg4gTWg\\"],\\"username\\":[\\"test\\"]},\\"browser\\":{\\"address\\":\\"1.1.1.1\\",\\"user-agent\\":\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0\\"}}"}'
a = json.loads(string)

问题不在于通过关键细节解析字典。 如果你make json.loads,你会看到key value里面的json无法解析。 我如何解析关键“细节”中的字典。

我尝试了其他一些图书馆。但没有成功。

python json python-3.x lib python-jsons
2个回答
0
投票

“details”键包含 JSON 对象的字符串表示形式,该对象已转义。 要解析“details”键内的嵌套 JSON,

  • 您需要先解码字符串,然后
  • 将其解析为 JSON。

尝试这样

import json

string = b'{"campaign_id":6,"email":"[email protected]","time":"2024-01-26T06:05:59.852155Z","message":"Submitted Data","details":"{\\"payload\\":{\\"__RequestVerificationToken\\":[\\"CfDJ8EfyW-fedawawdawdwadwadwawadawd-6xqg_ZIdEJBpbAHkDQdNM\\"],\\"__original_url\\":[\\"https://test-test-test.ru/\\"],\\"password\\":[\\"test\\"],\\"qwe\\":[\\"Gg4gTWg\\"],\\"username\\":[\\"test\\"]},\\"browser\\":{\\"address\\":\\"1.1.1.1\\",\\"user-agent\\":\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0\\"}}"}'
decoded_string = string.decode('utf-8')
data = json.loads(decoded_string)
details_json = json.loads(data['details'])

print(details_json)

0
投票

“详细信息”值似乎是 JSON - 您想要的字典的字符串编码。当外部字典也被编码时,就编码器而言,它只是一个普通字符串。您可以通过反转步骤来解开:解码外部字典,然后解码内部。

import json
string = b'{"campaign_id":6,"email":"[email protected]","time":"2024-01-26T06:05:59.852155Z","message":"Submitted Data","details":"{\\"payload\\":{\\"__RequestVerificationToken\\":[\\"CfDJ8EfyW-fedawawdawdwadwadwawadawd-6xqg_ZIdEJBpbAHkDQdNM\\"],\\"__original_url\\":[\\"https://test-test-test.ru/\\"],\\"password\\":[\\"test\\"],\\"qwe\\":[\\"Gg4gTWg\\"],\\"username\\":[\\"test\\"]},\\"browser\\":{\\"address\\":\\"1.1.1.1\\",\\"user-agent\\":\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0\\"}}"}'
a = json.loads(string)
a["details"] = json.loads(a["details"])
© www.soinside.com 2019 - 2024. All rights reserved.