2017-10-10 100 views
1

所以我有一个问题,在我的MacBook上阅读python中的json文件。这个问题很奇怪,因为我能够直接阅读json文件直到几分钟前。这发生在我将xcode中旧的json文件更改为新的json文件时,请参阅下文,有人可以帮我解决吗?Python突然没有读取MAC OS X上的json文件

旧JSON文件:

{ 
    "service 1” : { 
     { 
      "name" : "service 1" 
     }, 
    } 
    "service 2" : { 
     { 
      "name" : "service 2" 
     } 
    } 
} 

新JSON文件:

{ 
    "services” : [ 
     { 
      "name" : "service 1" 
     }, 
     { 
      "name" : "service 2" 
     } 
    ] 
} 

以下Python脚本无法读取上述两个JSON文件:

import json 

print "Running services: " 

with open('service_list.json') as service_file: 
    service_list = json.load(service_file) 
    print(service_file); 

以下我运行脚本时发生错误:

Running services: Traceback (most recent call last): File "update_checker.py", line 6, in service_list = json.load(service_file) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 290, in load **kw) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py", line 338, 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: Invalid control character at: line 2 column 22 (char 23)

有人可以告诉我发生了什么事吗? 在此先感谢!

+2

是,实际的JSON?它有智能报价和常规报价混合在一起。 –

+0

这些是实际的json文件,报价用法有什么错误吗? –

+0

是的,这是你的问题的原因。 –

回答

5

你有聪明的引号(或者像其他人所说的那样,某种类型的基于unicode的引用)。你需要定期双引号。看看最终报价services

{ 
    "services” : [ 
     { 
      "name" : "service 1" 
     }, 
     { 
      "name" : "service 2" 
     } 
    ] 
} 

需求,成为:

{ 
    "services" : [ 
     { 
      "name" : "service 1" 
     }, 
     { 
      "name" : "service 2" 
     } 
    ] 
}