Python-将字节数组转换为JSON格式

Python-将字节数组转换为JSON格式,第1张

Python-将字节数组转换为JSON格式

您的

bytes
对象 几乎 是JSON,但是它使用单引号而不是双引号,并且它必须是字符串。因此,解决该问题的一种方法是解码
bytes
to
str
并替换引号。另一种选择是使用
ast.literal_eval
;
有关详情,请参见下文。如果要打印结果或将其作为有效JSON保存到文件中,则可以将JSON加载到Python列表中,然后将其转储出去。例如,

import jsonmy_bytes_value = b'[{'Date': '2016-05-21T21:35:40Z', 'CreationDate': '2012-05-05', 'LogoType': 'png', 'Ref': 164611595, 'Classe': ['Email addresses', 'Passwords'],'link':'http://some_link.com'}]'# Depre UTF-8 bytes to Unipre, and convert single quotes # to double quotes to make it valid JSONmy_json = my_bytes_value.depre('utf8').replace("'", '"')print(my_json)print('- ' * 20)# Load the JSON to a Python list & dump it back out as formatted JSondata = json.loads(my_json)s = json.dumps(data, indent=4, sort_keys=True)print(s)

输出

[{"Date": "2016-05-21T21:35:40Z", "CreationDate": "2012-05-05", "LogoType": "png", "Ref": 164611595, "Classe": ["Email addresses", "Passwords"],"link":"http://some_link.com"}]- - - - - - - - - - - - - - - - - - - - [    {        "Classe": [ "Email addresses", "Passwords"        ],        "CreationDate": "2012-05-05",        "Date": "2016-05-21T21:35:40Z",        "link": "http://some_link.com",        "LogoType": "png",        "Ref": 164611595    }]

正如Antti
Haapala在评论中提到的那样,一旦我们将其解码为字符串,就可以

ast.literal_eval
用来转换
my_bytes_value
为Python列表。

from ast import literal_evalimport jsonmy_bytes_value = b'[{'Date': '2016-05-21T21:35:40Z', 'CreationDate': '2012-05-05', 'LogoType': 'png', 'Ref': 164611595, 'Classe': ['Email addresses', 'Passwords'],'link':'http://some_link.com'}]'data = literal_eval(my_bytes_value.depre('utf8'))print(data)print('- ' * 20)s = json.dumps(data, indent=4, sort_keys=True)print(s)

通常,出现此问题是因为有人通过打印Python

repr
而不是使用
json
模块创建正确的JSON数据来保存数据。如果可能的话,最好解决该问题,以便首先创建正确的JSON数据。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5103367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存