将字节字典转换为JSON

我有一个看起来像是从API返回的字节字典,我试图将其转换为JSON,但目前没有成功。

样本数据。

>>> endpoint_req.content
b'{\n  "ERSEndPoint" : {\n    "id" : "7c0504654",\n    "name" : "E123",\n    "description" : "",\n    "mac" : "E123",\n    "profileId" : "",\n    "staticProfileAssignment" : false,\n    "groupId" : "7fe99b20-322b-11ea-b4b9-3a35502b4b8b",\n    "staticGroupAssignment" : true,\n    "portalUser" : "",\n    "identityStore" : "",\n    "identityStoreId" : "",\n    "link" : {\n      "rel" : "self",\n      "href" : "https://",\n      "type" : "application/json"\n    }\n  }\n}'
>>> edata = json.dumps(endpoint_req.content.decode('utf-8'))
>>> edata
'"{\\n  \\"ERSEndPoint\\" : {\\n    \\"id\\" : \\"7c0504654...
>>> edata['ERSEndPoint']
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError
edata = ast.literal_eval(edata)
>>> edata['ERSEndPoint']
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: string indices must be integers
>>> edata
'{\n  "ERSEndPoint" : {\n    "id" : "7c0504654",\n...

我尝试的每一种转换方式都失败了,我知道这很可能是一些简单的东西,但我不确定它是什么。

解决方案:

你想加载的是 loads 并先用 decode.

import json
edata = json.loads(endpoint_req.content.decode("utf-8"))
edata
{'ERSEndPoint': {'id': '7c0504654', 'name': 'E123', 'description': '', 'mac': 'E123', 'profileId': '', 'staticProfileAssignment': False, 'groupId': '7fe99b20-322b-11ea-b4b9-3a35502b4b8b', 'staticGroupAssignment': True, 'portalUser': '', 'identityStore': '', 'identityStoreId': '', 'link': {'rel': 'self', 'href': 'https://', 'type': 'application/json'}}}

本文来自投稿,不代表运维实战侠立场,如若转载,请注明出处:https://www.shizhanxia.com/729.html

(0)
上一篇 2022年6月29日 下午3:59
下一篇 2022年6月29日 下午3:59

相关推荐

发表评论

登录后才能评论