2012-12-03 104 views
0

我试图从JSON文件中读取数据,但是我遇到了奇怪的错误,不知道它的含义。我尝试了谷歌搜索,但它没有帮助。我得到了以下错误:无法读取Python中的JSON文件

Traceback (most recent call last): 
    File "items_uploader.py", line 40, in <module> 
    main() 
    File "items_uploader.py", line 16, in main 
    LoadItemsData(settings['items_filename']) 
    File "items_uploader.py", line 36, in LoadItemsData 
    data = json.load(json_data) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 278, in load 
    **kw) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads 
    return _default_decoder.decode(s) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode 
    obj, end = self.scan_once(s, idx) 
ValueError: Expecting , delimiter: line 8 column 397 (char 3064) 

代码本身是很简单的:

import socket 
import MySQLdb 
from ConfigParser import SafeConfigParser 
import json 
from pprint import pprint 

def main(): 
    settings = GetSettings() 
    LoadItemsData(settings['items_filename']) 
    return 

def GetSettings(): 
    settings = {} 
    parser = SafeConfigParser() 
    parser.read('settings.yaml') 
    settings['items_filename'] = parser.get('files', 'items_filename') 
    return settings 

def LoadItemsData(filename): 
    json_data=open(filename) 
    data = json.load(json_data) 
    return data 

if __name__ == '__main__': 
    main() 

任何帮助,将不胜感激!

+3

您确定您的JSON数据有效吗?错误似乎是您输入数据中的语法错误。 –

+2

请包括文件中发生JSON错误的位置(第8行第397列,字符3064)。 –

+0

基本上你所发布的python代码(除了回溯之外)都与这里相关,因为唯一重要的是'settings ['items_filename']'文件的内容。 – jdi

回答

3

确保你的JSON数据是有效的格式,一个额外的字符搞砸了python解析器。要测试您的JSON数据,请转至here,确保您可以以正确的格式查看它。

举例来说,如果我有

JSON_data ='{"c":[{"xy":{"xstart":0,"xend":5,"ystart":1,"yend":5},"names":["D","T","O","H","L","C",],"co":["rgb(0,0,128)"]}],"Values":{"D":["11/30/2012"],"T":["09:44:00"],"O":["5848.40"],"H":["5848.40"],"L":["5847.45"],"C":["5848.40"]}}' 

,C(这里["D","T","O","H","L","C",])会显示一个错误。因此,请确保您的数据格式正确,并且没有不必要的字符。

希望这会有所帮助。

+0

中的样式谢谢,原来它是JSON文件中的一个错误! – pisarzp