Python使用json load解析带有两个json对象列表的文件

阿尼什

我有一个包含两个 json 对象列表的大型 json 文件。

示例数据:

数据.json

[{"a":1}][{"b":2}]

解析器.py

import json

message = json.load(open("data.json"))

for m in message:
    print m

正如预期的那样,我得到了 ValueError。

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 290, in load
    **kw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 369, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 10 - line 1 column 19 (char 9 - 18)

我想通过跟踪字符数来拆分文件。处理这个问题的pythonic方法是什么?

科迪

您可以使用json.JSONDecoder.raw_decode()which 将解析一个完整的对象并返回它结束的字符位置,允许您遍历每个对象:

from json import JSONDecoder, JSONDecodeError

decoder = JSONDecoder()
data = '[{"a":1}][{"b":2}]'

pos = 0
while True:
    try:
        o, pos = decoder.raw_decode(data, pos)
        print(o)
    except JSONDecodeError:
        break

结果:

[{'a': 1}]
[{'b': 2}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

解析两个JSON对象

java返回带有两个json数组的json对象

使用java流比较两个带有字段的对象列表

使用带有两个列表的对象的XDocument创建XML

使用带有两个列表作为参数的休眠方式从数据库获取对象

Ajax 将带有两个数组的 JSON 对象发送到一个 servlet 并在没有 jQuery 的情况下在 java servlet 中解析

使用Python合并两个json文件

Python / Pydantic-使用带有json对象的列表

如何在Android中解析具有两个值的json对象?

在Python中使用JSON对象解析文件

如何按属性过滤两个 json 对象列表?

如何将两个float数组的JSON解析为两个列表?

使用带有Retrofit2两个多部分和JSON键值对上传文件

当两个对象相同时,JSON 返回一个带有 ID 的字段和另一个带有完整对象的字段

使用带有if条件的awk分析两个文件

JSON解析内部具有两个arraylists的数组

Python-将两个列表组合成一个json对象

合并Java中的两个对象列表以使用Jackson创建一个Json

解析带有对象的 json 文件时出错

使用Python解析JSON列表

如何使用 Python 将 CSV 文件转换为带有嵌套 json 对象的 JSON 文件?

如何使用Python的argparse解析带有两个参数的可重复选项?

使用Volley解析内部带有JSON数组的JSON对象

如何使用python将带有列表的json作为值分离为单独的json对象?

使用python解析json文件

使用python解析json文件

比较两个使用断言转换为对象的json列表

使用带有两个参数的C#进行REST API发布Json

如何使用Json.NET有效地解析最多两个深度?