0

我從來沒有使用過JSON。Python 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試圖告訴我什麼是我的數據不可序列化的原因?

+0

你能不能在這裏提到你試過了什麼? – sumit

回答

0

因爲您沒有發佈您的代碼,所以我會採取瘋狂的猜測。你這樣做:

import json 

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

相反的:

import json 

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

你已經提到「('file.json')」。我不確定這是否意味着我的文件應該是.json格式,如果是這樣,如何將它融入到一個。 目前,該文件是一個文檔的.py,所以我有: '進口JSON 與開放(R 「C:\用戶\ Aphrael \桌面\ Index.py」, 「R +」)作爲Compile_Index: Index_Data = Compile_Index.read()' – GoddessAphrael

+0

抱歉的評論格式不正確。仍在學習此網站的細節 – GoddessAphrael

+0

文件擴展名不相關。只需調用'json.loads(Index_Data)'。 –

0

嘗試使用波紋管代碼:

json.dumps(objectName.__dict__) 

變化的objectName爲對象。

0

感謝您的意見。

但是,我被導師說服,通過將信息放入.dat文件並使用exec()函數以不同的方式執行相同的操作 - 使代碼很容易轉移到其他語言,以及在執行可能被篡改的代碼時更安全。