【问题标题】:Python JSON serializing issuePython JSON序列化问题
【发布时间】:2016-02-12 05:43:12
【问题描述】:

我以前从未使用过 JSON。

我的文件包含 151 个不同的预定义列表。我想要做的是能够读取文件,并使用一个类,从文件中存储的信息中创建 151 个对象。

我遇到的问题是我可以读取文件,但是它没有创建对象。据我了解,这是因为该文件在 151 个列表中同时包含整数和字符串组件 - 但读取的文件仅由字符串组成。

找到 JSON - 据我了解 - 它可以将信息序列化和反序列化为整数和字符串 - 从而允许类创建 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 试图告诉我的原因是我的数据是不可序列化?

【问题讨论】:

  • 你能在这里提一下你试过什么吗?

标签: python json serialization python-3.4 notserializableexception


【解决方案1】:

由于您没有发布代码,因此我将大胆猜测。你这样做了:

import json

with open('file.json') as f:
    json.loads(f)

代替:

import json

with open('file.json') as f:
    json.loads(f.read())

【讨论】:

  • 您提到了“ ('file.json') ”。我不确定这是否意味着我的文件应该是 .json 格式,如果是,如何将它变成一个格式。目前该文件是一个 .py 文件,所以我有:import json with open(r"C:\Users\Aphrael\Desktop\Index.py", "r+") as Compile_Index: Index_Data = Compile_Index.read()
  • 抱歉评论格式不好。仍在学习本网站的细微差别
  • 文件扩展名不相关。只需致电json.loads(Index_Data)
【解决方案2】:

尝试使用下面的代码:

json.dumps(objectName.__dict__)

为您的对象更改 objectName。

【讨论】:

    【解决方案3】:

    感谢您的建议。

    我能够让它工作,但是,我的导师说服我通过将信息放入 .dat 文件并使用 exec() 函数以不同的方式做同样的事情 - 使代码能够很容易转移到其他语言,并且在执行可能被篡改的代码时显然更安全。

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多