Python 如何读取没有';你没有[]吗?

Python 如何读取没有';你没有[]吗?,python,json,Python,Json,我在Python中有一个.json文件,如下所示: { "abc_id": "ABC-2019-1945", "def_id": "20" }, { "abc_id": "ABC-2019-1944", "def_id": "200" } 我试图使用json.load(open(json_path,“r”))读取它,但它给了我一个错误,因为它有多个.json对象 看起来简单地在文件的开头添加[和结尾添加]就可以解决问题,但我不知道如何向文件中添加

我在Python中有一个.json文件,如下所示:

  {
    "abc_id": "ABC-2019-1945",
    "def_id": "20"
  },
  {
    "abc_id": "ABC-2019-1944",
    "def_id": "200"
  }
我试图使用
json.load(open(json_path,“r”))
读取它,但它给了我一个错误,因为它有多个.json对象

看起来简单地在文件的开头添加
[
和结尾添加
]
就可以解决问题,但我不知道如何向文件中添加我无法读取的内容(对每个文件手动操作对我来说都是一个糟糕的解决方案)。 我还尝试将该文件作为文本文件读取,但我不知道如何将.json作为文本读取

有谁能为我的问题提供一个好的解决方案吗?

模块提供了两种解析JSON对象的方法(同样适用于序列化):


  • -从文件对象读取JSON字符串错误是因为JSON无效,但这不仅仅是因为缺少[],而是因为每个条目中def_id键末尾的逗号错误。每个对象中的最后一个元素不得以逗号结尾

    你可以运行它来检查

    有效

    json.loads('[{"abc_id": "ABC-2019-1945", "def_id": "20"}, {"abc_id": "ABC-2019-1944", "def_id": "200"}]')
    
    由于额外的逗号而无效

    json.loads('[{"abc_id": "ABC-2019-1945", "def_id": "20",}, {"abc_id": "ABC-2019-1944", "def_id": "200",}]')
    
    所以原始的JSON应该是这样的

    [
        {
            "abc_id": "ABC-2019-1945",
            "def_id": "20"
        },
        {
            "abc_id": "ABC-2019-1944",
            "def_id": "200"
        }
    ]
    
    **更新**现在问题已修改为包含您可以使用的有效JSON

    with open(json_path,"r") as f:
        d = f.read()
    
    json.loads(f"[{data}]")
    
    # or
    json.loads("[" + data + "]")
    
    # or
    json.loads("[%s]" % data)
    
    # or
    json.loads("[{}]" % data)
    
    

    修复生成该文件的任何内容。它不是格式正确的JSON文件。我也尝试将该文件作为文本文件读取,但我不知道如何将.JSON作为文本读取。不过,JSON是一种文本格式,您的意思是什么?它也位于列表/数组元素内部。我最初点击了submit(提交)太早了Steve:即使在发布了你的答案之后,你也可以修改你的答案。糟糕的是,我简化了.json,忘记了删除comas。我已经更新了这个问题。@martineau我知道,我已经,我正在回复一条提出问题的评论,但后来被删除了
    with open(json_path,"r") as f:
        d = f.read()
    
    json.loads(f"[{data}]")
    
    # or
    json.loads("[" + data + "]")
    
    # or
    json.loads("[%s]" % data)
    
    # or
    json.loads("[{}]" % data)