【问题标题】:Python suddenly not reading json files on MAC OS XPython突然不读取MAC OS X上的json文件
【发布时间】: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

标签: python json macos


【解决方案1】:

您有智能引号(或者正如其他人所说,某种基于 unicode 的引号)。你需要有常规的双引号。查看services 的结尾引用:

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

需要成为:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多