我试图重现一个像flare.json这样的json文件,而且我的名字就像IndicatorCode,所以我试图构建一个dictTree和重现上面提到的JSON文件,我的代码放在这里:当试图写一个json文件时抛出一个错误“not JSON serializable”
import numpy as np
import pandas as pd
import json
li = [];
dictTree = {}
out = {"name":'Indicators', 'children':[]};
dic = pd.read_csv('../dictTree.csv')
dicta = {}
for i in range(len(dic)):
dicta[dic["IndicatorCode"][i]] = dic["IndicatorName"][i];
li.append(dic["IndicatorCode"][i])
for x in li:
i = 0
k = 0
d = dictTree
while k < 2:
s = ''
while x[i] != '.':
s += x[i]
i = i+1
i=i+1
k= k+1
if s not in d:
d[s] = {}
#print s
d = d[s]
s = ''
while i < len(x) and x[i] != '.':
s += x[i]
i = i+1
if s not in d:
d[s] = []
d[s].append({'Name':x,"info":dicta[x]})
level1 = out['children']
for x in dictTree:
level2 = []
level1.append({"name":x,"children":level2})
dictlevel2 = dictTree[x]
for y in dictlevel2:
level3 = []
level2.append({'name':y,'children':level3})
dictlevel3 = dictlevel2[y]
for z in dictlevel3:
level3.append({'name':z,'children':dictlevel3[z]})
with open('dictTree.json','w') as f:
json.dumps(f,out)
和错误是这样的:
Traceback (most recent call last):
File "produceTreeJson.py", line 46, in <module>
json.dumps(f,out)
File "/Users/Peter/anaconda/lib/python2.7/json/__init__.py", line 250, in dumps
sort_keys=sort_keys, **kw).encode(obj)
File "/Users/Peter/anaconda/lib/python2.7/json/encoder.py", line 207, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/Users/Peter/anaconda/lib/python2.7/json/encoder.py", line 270, in iterencode
return _iterencode(o, 0)
File "/Users/Peter/anaconda/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <open file 'dictTree.json', mode 'w' at 0x107b43030> is not JSON serializable
为了简化我的问题,我只是重现错误,如遵循使用简化输出数据:
>>> z = {'name': 'indicator', 'children': [{'name': '1','size':1}, {'name':2,"size" :2}]}
>>> with open('test.json','w') as f:
... json.dump(f,z)
然后我得到了同样的错误:TypeError: <open file 'test.json', mode 'w' at 0x1032c66f0> is not JSON serializable
请帮助我,THX〜
'json.dumps'这是转储到字符串(注意's')你想要的正常'json.dump'它转储到一个文件。 –
@BurhanKhalid谢谢,我需要更精确地处理python! –