首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >加载和解析包含多个JSON对象的JSON文件

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

Stack Overflow用户
提问于 2012-09-17 07:00:57
回答 4查看 248.6K关注 0票数 119

我正在尝试在Python中加载和解析一个JSON文件。但是我在尝试加载文件时被卡住了:

代码语言:javascript
复制
import json
json_data = open('file')
data = json.load(json_data)

收益率:

代码语言:javascript
复制
ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774)

我在Python文档中查看了 ,但是通读这个看起来很糟糕的文档是非常令人沮丧的。

前几行(使用随机条目匿名):

代码语言:javascript
复制
{"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"}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-17 07:08:23

你有一个JSON Lines format text file。您需要逐行解析您的文件:

代码语言:javascript
复制
import json

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

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

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

如果您有一个包含单独的JSON对象的文件,中间有分隔符,那么可以使用How do I use the 'json' module to read in one JSON object at a time?通过缓冲方法解析出单独的对象。

票数 259
EN

Stack Overflow用户

发布于 2017-07-18 02:00:12

对于那些偶然遇到这个问题的人: python库(比这个问题年轻得多)很优雅地处理文件,每行只有一个jsonlines文档。请参阅https://jsonlines.readthedocs.io/

票数 15
EN

Stack Overflow用户

发布于 2012-09-17 07:09:17

这是错误的格式。每行有一个JSON对象,但它们不包含在更大的数据结构(即数组)中。您需要重新格式化它,使其以[开头,以]结尾,并在每行的末尾添加一个逗号,或者将其作为单独的字典逐行解析。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12451431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档