def writeJsonFile(data,outfilename): with open(outfilename+'.json', 'wt',encoding='utf-8') as f: for m in data: json.dump(m,f,ensure_ascii=False,indent=4) f.close()
把两个List写入test.json
def test(): result =[1,2,3] temp ={ 'test':result } content =[] content.append(temp) content.append(temp) writeJsonFile(content,'test')
于是便有了一个test.json
{
"test": [
1,
2,
3
]
}{
"test": [
1,
2,
3
]
}
那么问题来了。
读取文件
def readJsonFile(file_name): data =[] with open(file_name,'r',encoding='utf-8') as f: data = json.load(f) f.close() return data
显示错误:
json.decoder.JSONDecodeError: Extra data: line 7 column 2 (char 55)
如果test.json文件是这样的
{
"test": [
1,
2,
3
]
}
那么用如上的读取方法,是没有问题的。
这该怎么办呢?
思路如下:
def readJsonFileToStr(file_name): with open(file_name,'r',encoding='utf-8') as f: text = f.read() f.close() return text
先把文件读取成字符串,
然后把“}{”替换成“}aaaaa{” 再用'aaaaa'进行字符串分割!
使用json.loads(str)对每个分割后的字符串进行转换。
def read(): text = readJsonFileToStr('test.json') objs = text .replace('}{','}aaaaa{') # print(objs) objs = objs.split('aaaaa') print(len(objs)) for item in objs: data = json.loads(item) print(data)