Python 值错误 : No JSON object could be decoded

标签 python json

我正在尝试读取 json 并获取其值。 我有一个包含 JSON 文件的文件夹,我需要打开所有文件并从中获取值。

这是代码:

# -*- encoding: utf-8 -*-
from pprint import pprint
import json
import os 
def start():
    for dirname, dirnames, filenames in os.walk('test'):
        for filename in filenames:
            json_file = open(os.path.join(dirname, filename)).read()
            # json_file = unicode(json_file, 'utf-8')
            json_data = json.loads(json_file)
           pprint(json_data)
            for key, value in json_data.items():
                print "KEY : ", key
                print "VALUE: ", value
                start()

这是 JSON 之一

{ "test" : "Search User 1",
   "url"  : "http://127.0.0.1:8000/api/v1/user/1/?format=json",
   "status_code" : 200,
   "method" : "get"
}

但是当我运行它时,我得到了这个:

ValueError: No JSON object could be decoded

这到底是怎么回事?昨天它和现在一样工作,还是我疯了

我这样试过:

from pprint import pprint
import json
import os
for dirname, dirnames, filenames in os.walk('test'):
    for filename in filenames:
        json_file_contents = open(os.path.join(dirname, filename)).read()
        try:
            json_data = json.loads(json_file_contents)
        except ValueError, e:
            print e
            print "ERROR"

我看不到任何错误'-'

for filename in filenames:
        with open(os.path.join(dirname,filename)) as fd:
            json_data = fd.read()
            print json_data

这样我可以看到 json 文件包含什么,但我不能使用例如通过 key 访问,如 json_data['url']

最佳答案

对我来说这是一个编码问题, 你可以尝试使用 Notepad++编辑你的 .json 文件 并将编码更改为不带 BOM 的 UTF-8。 您可以检查的另一件事是您的 json 脚本是否为 valid

关于Python 值错误 : No JSON object could be decoded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26808814/

相关文章:

python - Pandas:将事件数据汇总到表中

python - 在 Vagrant 中运行 Python 脚本

php - FullCalendar - 通过 ajax 发送 View

python - Tkinter 与 openweather

javascript - 如何遍历复杂的 Json 对象并对每个等于特定值的属性做一些事情

ios - 如何使用 Alamofire 和 SwiftyJSON 保存 Json 数据?

python - 修复无效的 JSON 八进制转义

python - 使用 PyQt5 的语法高亮编辑器

python - 如何对 NumPy 数组执行逐元素 bool 运算

python - 在 Python 中使用事件循环将生成器转换为回调