2017-02-26 51 views
0

这里是我的JSON文件格式,在python中逐行加载json时出错?

[{ 
"name": "", 
"official_name_en": "Channel Islands", 
"official_name_fr": "Îles Anglo-Normandes", 
}, and so on...... 

同时加载上面JSON是在一个文件中我得到这个错误,

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: 

这里是我的Python代码,

import json 

data = [] 
with open('file') as f: 
    for line in f: 
     data.append(json.loads(line)) 
+0

也许列表中的某个属性实际上是单引号而不是双引号? – elena

回答

1

您似乎一次处理整行文件一行。为什么不简单地使用.read()来立即获取整个内容,然后将其提供给json?

with open('file') as f: 
    contents = f.read() 
    data = json.loads(contents) 
更好

的是,为什么不使用json.load()直接传递可读,让它处理咕嘟咕嘟?

with open('file') as f: 
    data = json.load(f) 
+0

您的意思是json.loads不是json.load? –

+0

编号'loads'从字符串中读取,而'load'从可读取的(如文件句柄)读取 –

+0

或者,是的。我刚刚看到内容=版本中的错误。编辑。 –

2

,}在JSON中是不允许的(我想这是根据给定的数据的问题)。

+0

,允许在json中,上面的示例中断了json的内容。而不是,}它的}, –

+0

我的意思是,'''',参见http://www.json.org/格式规范。 –

0

问题出在您读取并逐行解码文件。文件中的任何一行(例如,"[{")都不是有效的JSON表达式。

+0

什么是加载JSON文件到字典的正确方法? –

+0

只需使用文件中的'json.load()'。 – DyZ

0

您的个人行不是有效的JSON。例如,第一行'[{'本身不是有效的JSON。如果您的整个文件实际上是有效的JSON并且您想要单独的行,请首先加载整个JSON,然后浏览python字典。

import json 

data = json.loads(open('file').read()) # this should be a list 
for list_item in data: 
    print(list_item['name']) 
+0

我想将json转换为字典 –