【问题标题】:Python error: Extra data: line 1 in loading a big Json filePython 错误:额外数据:加载大 Json 文件时的第 1 行
【发布时间】:2020-07-22 21:31:56
【问题描述】:

我正在尝试读取一个 370 MB 的 JSON 文件

import json
data = open( "data.json" ,"r")
json.loads(data.read())

而且不可能轻易找到以下错误的根本原因,

json.decoder.JSONDecodeError: Extra data: line 1 column 1024109 (char 1024108)

我查看了类似的问题并尝试了以下 StackOverflow answer

import json
data = [json.loads(line) for line in open('data.json', 'r')]

但它并没有解决问题。我想知道是否有任何解决方案可以找到文件中发生错误的位置。我从同一来源获取了一些其他文件,它们运行没有任何问题。

一小部分 Json 文件是一个字典列表,例如,

{
"uri": "p",
"source": {
    "uri": "dail",
    "dataType": "pr",
    "title": "Daily"
},
"authors": [
    {
        "type": "author",
        "isAgency": false
    }
],
"concepts": [

    {
        "amb": false,
        "imp": true,
        "date": "2019-05-23",
        "textStart": 2459,
        "textEnd": 2467
    },
    {
        "amb": false,
        "imp": true,
        "date": "2019-05-09",
        "textStart": 2684,
        "textEnd": 2691
    }
],
"shares": {},
"wgt": 100,
"relevance": 100
}

【问题讨论】:

    标签: json python-3.x jsonify


    【解决方案1】:

    json 库的问题是将所有内容加载到内存并完整解析然后在内存中处理,这对于如此大量的数据显然是有问题的。

    相反,我建议看看https://github.com/henu/bigjson

    import bigjson
    
    with open('data.json', 'rb') as f:
        json_data = bigjson.load(f)
    

    【讨论】:

    • 它引发了一个错误,上面写着“AttributeError: 'str' object has no attribute 'decode'”我已经工作了 1GB Json 并且没有错误。我认为格式不正确,但不知道如何解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多