在使用python的jason库时,偶然碰到以下问题
TypeError: the JSON object must be str, bytes or bytearray, not ‘list’
通过如下代码可复现问题
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> import json
>>> ra = json.loads(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Python36\lib\json\__init__.py", line 348, in loads
'not {!r}'.format(s.__class__.__name__))
TypeError: the JSON object must be str, bytes or bytearray, not 'list'
分析可知,python中的列表如果要通过json库解析为jason对象,就会出现以上提示。意思是,jason的对象必须是字符串,字节或字节数组,不能是列表。如果将 a 通过 str(a),在调用 loads,则不会出现以上问题。
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> str(a)
'[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'
>>> json.loads(str(a))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
》扩展说明 》
jason导入数据
jason.load
jason.loads 其中s表示字符串
jason 导出数据
f = open(‘./data/test.txt’, ‘r’)
jason.dump(data, f)
jason.dumps