Python JSON序列化问题

时间:2016-02-12 05:43:12

标签: python json serialization python-3.4 notserializableexception

我之前从未使用过JSON。

我的文件包含151个不同的预定义列表。我想要做的是能够读取文件,并使用类,从存储在文件中的信息创建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试图告诉我的是我的数据是什么原因不可序列化?

3 个答案:

答案 0 :(得分:1)

由于你没有发布你的代码,我会猜测。你这样做了:

import json

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

而不是:

import json

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

答案 1 :(得分:0)

尝试使用以下代码:

<style type="text/css">
    #container{
        font-size: 28px;
        width:100%;
        height:100%;
        text-align: center;
    }
    #left{
        display:inline-block;
        width:50%;
        margin:0;
    }
    #right{
        display:inline-block;
        width:50%;
        text-wrap:none;
    }

更改对象的objectName。

答案 2 :(得分:0)

感谢您的建议。

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