python - Python json.load JSONDecodeError:尝试加载多个 json 字典时出现额外数据错误
问题描述
所以我必须以如下所示的相同格式导入一个 json 文件:
{
"name": "bob"
}
{
"name": "sarah"
}
这是我试图用来打开它的功能:
def read_json_file(file):
with open(file, "r") as r:
response = json.load(r)
return response
尝试加载它时出现此错误:
json.decoder.JSONDecodeError:额外数据:第 4 行第 1 列(字符 22)
由于文件很大,我无法修复 json 数据。我需要一种解决方法来解析每个字典。
当被问到这个问题时,我已经尝试过这种方法:
Python json.loads 显示 ValueError: Extra data
我尝试更改我的功能以匹配最佳答案:
response = json.dumps(r)
然而,这带来了这个错误:
TypeError:TextIOWrapper 类型的对象不是 JSON 可序列化的
任何帮助将不胜感激。
解决方案
为了解决那种“多个”/“无效”JSON,您可以读取整个文件,添加这些括号[]
来封装字符串,然后将其加载为带有json.loads()
.
- 将整个文件读取为字符串,将其存储到变量中。
- 删除所有出现的换行符和空格。
- 添加逗号
,
的交点}{
,这样就可以了...},{...
。 - 用括号将其封装起来
[]
。 - 用于
json.loads()
解析 JSON 字符串。
完整代码:
def read_json_file(file):
with open(file, "r") as r:
response = r.read()
response = response.replace('\n', '')
response = response.replace('}{', '},{')
response = "[" + response + "]"
return json.loads(response)
推荐阅读
- css - col 之间的容器行空间
- python - 如何为要输出到 HTML 的 python 数据框列标题设置背景颜色?
- javascript - 如何在 React 组件中修复列表样式计划的渲染
- sql - RSQLite sql 命令中的字符数
- macos - VsCode包含路径错误无法解决
- base64 - Taurus 用户如何传入 Content-Type 和 base64 值?
- angular - Visual Studio 2019 Angular 模板不起作用?
- asp.net - ASP.NET MVC - 将 JSON 对象返回到视图并“格式化为表格”
- sql - 基于列删除 SQL 中的重复项
- swift - 检测 iOS 暗模式的变化