【发布时间】:2018-03-22 08:45:51
【问题描述】:
所以我在我的 macbook 上读取 python 中的 json 文件时遇到问题。这个问题很奇怪,因为直到几分钟前我才能够读取 json 文件。当我将 xcode 中的旧 json 文件更改为新的 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);
运行脚本时出现以下错误:
运行服务: 回溯(最近一次通话最后): 文件“update_checker.py”,第 6 行,在 service_list = json.load(service_file) 加载中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py”,第 290 行 **千瓦) 加载中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py”,第 338 行 返回 _default_decoder.decode(s) 解码中的文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第 366 行 obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第 382 行,在 raw_decode obj, end = self.scan_once(s, idx) ValueError:无效控制字符位于:第 2 行第 22 列(字符 23)
谁能告诉我发生了什么事? 提前致谢!
【问题讨论】:
-
那是真正的 JSON 吗?它有智能引号和常规引号。
-
这些是实际的json文件,引用的用法有什么问题吗?
-
是的,这是您的问题的原因。
-
如果没有 ASCII 双引号来表示密钥
services的结束,解析器会继续运行,假设”是其他一些作为密钥一部分的 Unicode 字符。最终,它到达了行尾,遇到了一个在 JSON 字符串中无效的换行符。 -
基本上你有一个不是引号的引号......它是unicode:
u+201D: Right double quotation mark