当前位置: 首页 > 知识库问答 >
问题:

加载和解析包含多个JSON对象的JSON文件

聂鹏云
2023-03-14

我正在尝试用Python加载和解析一个JSON文件。但我无法加载文件:

import json
json_data = open('file')
data = json.load(json_data)

收益率:

ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774)
{"votes": {"funny": 2, "useful": 5, "cool": 1}, "user_id": "harveydennis", "name": "Jasmine Graham", "url": "http://example.org/user_details?userid=harveydennis", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 1, "useful": 2, "cool": 4}, "user_id": "njohnson", "name": "Zachary Ballard", "url": "https://www.example.com/user_details?userid=njohnson", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 1, "useful": 0, "cool": 4}, "user_id": "david06", "name": "Jonathan George", "url": "https://example.com/user_details?userid=david06", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 6, "useful": 5, "cool": 0}, "user_id": "santiagoerika", "name": "Amanda Taylor", "url": "https://www.example.com/user_details?userid=santiagoerika", "average_stars": 3.5, "review_count": 12, "type": "user"}
{"votes": {"funny": 1, "useful": 8, "cool": 2}, "user_id": "rodriguezdennis", "name": "Jennifer Roach", "url": "http://www.example.com/user_details?userid=rodriguezdennis", "average_stars": 3.5, "review_count": 12, "type": "user"}

共有1个答案

顾赞
2023-03-14

您有一个JSON行格式的文本文件。您需要逐行解析您的文件:

import json

data = []
with open('file') as f:
    for line in f:
        data.append(json.loads(line))

每一行都包含有效的JSON,但作为一个整体,它不是有效的JSON值,因为没有顶级列表或对象定义

请注意,因为文件每行都包含JSON,所以省去了尝试一次性解析所有文件或找到流式JSON解析器的麻烦。您现在可以选择分别处理每一行,然后再移到下一行,这样可以节省处理过程中的内存。如果您的文件真的很大,您可能不希望将每个结果追加到一个列表中,然后处理所有内容。

如果您有一个包含单独的JSON对象的文件,中间带有分隔符,那么如何使用'JSON'模块一次读入一个JSON对象?若要使用缓冲方法解析出单个对象,请执行以下操作。

 类似资料:
  • 问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着 18.2。— Python文档中的 JSON编码器和解码器 ,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 您有一个JSON Lines格式的文本文件。您需要逐行解析文件: 每 行都 包含有效的JSON,但总的来说,它不是有效的JSON值,因为没

  • 问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着18.2。文档中的JSON编码器和解码器,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 你有一个JSON Lines格式的文本文件。你需要逐行解析文件: 每行都包含有效的JSON,但总体而言,它不是有效的JSON值,因为没有顶级列表或对象定义。 请

  • 我从accuweather获得了以下带有json的代码 我尝试通过Jackson将此对象解析为POJO 我有json中指定的所有模型,如、数组、,由组成(在json中命名为最小值和最大值)等,它们都有私有字段和公共构造函数、getter和setter。但是我没有一些字段,因为我想省略它们(Day、night、EpochDate、Source)。 当我运行程序时,我得到了错误 com.fasterx

  • 我希望在每个数组中获取多个对象,但我的代码显示了单个对象的操作。下面是我的PHP代码,我如何添加另一个循环来获取多个对象 这是显示单个物体的结果

  • 问题内容: 我正在解析包含json对象的文件。问题是某些文件在一行中有多个对象。例如: 我做了一个函数,尝试在没有左括号的情况下解析子字符串,但是值中可能有大括号。我尝试过通过检查引号的开头和结尾来跳过值,但是也有带有转义引号的值。有关如何处理此问题的任何想法? 我的尝试: 问题答案: 简单但不够健壮的版本: 如果包含在字符串中,则将失败 正如其他建议一样,您然后可以尝试解析每个元素。如果无效,则

  • 问题内容: 使用该包可以很容易地解析如下对象。 我面临的问题是从服务器返回多个命令,如下所示: 无法使用以下代码进行解析。 我正在尝试解析Common Crawl数据(请参阅示例)。 我怎样才能做到这一点? 问题答案: 假设您的输入确实是一系列有效的JSON文档,请使用json.Decoder对其进行解码: 游乐场:https://play.golang.org/p/ANx8MoMC0yq 如果您