Python JSON 序列化问题
Python JSON serializing issue
我以前从未使用过JSON。
我的文件包含 151 个不同的预定义列表。我想要做的是能够读取文件,并使用 class,根据文件中存储的信息创建 151 个对象。
我遇到的问题是我可以读取文件,但是,它没有创建对象。据我所知,这是因为该文件包含 151 个列表中的整数和字符串组件 - 但读取的文件仅由字符串组成。
找到 JSON - 据我所知 - 它可以将信息序列化和反序列化为整数和字符串 - 从而允许 Class 创建 151 个对象。
但是 - 我在理解 JSON 的确切工作原理时遇到了问题,而且由于不熟悉它,我也在努力理解它的错误消息。
收到的错误是:
Traceback (most recent call last):
File "<pyshell#38>", line 1, in <module>
json.dump(Compile_Index, r"C:\Users\Aphrael\Desktop\Index.py")
File "C:\Python34\lib\json\__init__.py", line 178, in dump
for chunk in iterable:
File "C:\Python34\lib\json\encoder.py", line 429, in _iterencode
o = _default(o)
File "C:\Python34\lib\json\encoder.py", line 173, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <_io.TextIOWrapper name='C:\Users\Aphrael\Desktop\Index.py' mode='r+' encoding='cp1252'> is not JSON serializable
是否有人可以告诉我我正在尝试错误地做事,并让我走上正确的道路 - 或者以其他方式解释 JSON 试图告诉我的是我的数据不可序列化的原因?
我将大胆猜测,因为您没有 post 您的代码。你这样做了:
import json
with open('file.json') as f:
json.loads(f)
而不是:
import json
with open('file.json') as f:
json.loads(f.read())
尝试使用下面的代码:
json.dumps(objectName.__dict__)
为您的对象更改对象名称。
感谢您的建议。
我能够让它工作,但是,我的导师说服我以不同的方式做同样的事情,将信息放入 .dat 文件并使用 exec() 函数 - 启用代码可以轻松转移到其他语言,并且在执行可能已被篡改的代码方面显然更安全。
我以前从未使用过JSON。
我的文件包含 151 个不同的预定义列表。我想要做的是能够读取文件,并使用 class,根据文件中存储的信息创建 151 个对象。
我遇到的问题是我可以读取文件,但是,它没有创建对象。据我所知,这是因为该文件包含 151 个列表中的整数和字符串组件 - 但读取的文件仅由字符串组成。
找到 JSON - 据我所知 - 它可以将信息序列化和反序列化为整数和字符串 - 从而允许 Class 创建 151 个对象。
但是 - 我在理解 JSON 的确切工作原理时遇到了问题,而且由于不熟悉它,我也在努力理解它的错误消息。
收到的错误是:
Traceback (most recent call last):
File "<pyshell#38>", line 1, in <module>
json.dump(Compile_Index, r"C:\Users\Aphrael\Desktop\Index.py")
File "C:\Python34\lib\json\__init__.py", line 178, in dump
for chunk in iterable:
File "C:\Python34\lib\json\encoder.py", line 429, in _iterencode
o = _default(o)
File "C:\Python34\lib\json\encoder.py", line 173, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <_io.TextIOWrapper name='C:\Users\Aphrael\Desktop\Index.py' mode='r+' encoding='cp1252'> is not JSON serializable
是否有人可以告诉我我正在尝试错误地做事,并让我走上正确的道路 - 或者以其他方式解释 JSON 试图告诉我的是我的数据不可序列化的原因?
我将大胆猜测,因为您没有 post 您的代码。你这样做了:
import json
with open('file.json') as f:
json.loads(f)
而不是:
import json
with open('file.json') as f:
json.loads(f.read())
尝试使用下面的代码:
json.dumps(objectName.__dict__)
为您的对象更改对象名称。
感谢您的建议。
我能够让它工作,但是,我的导师说服我以不同的方式做同样的事情,将信息放入 .dat 文件并使用 exec() 函数 - 启用代码可以轻松转移到其他语言,并且在执行可能已被篡改的代码方面显然更安全。