我希望将一个标准的 JSON 对象操作为一个对象,其中每一行都必须包含一个单独的、自包含的有效 JSON 对象。查看 JSON 行
JSON_file =
[{u'index': 1,
u'no': 'A',
u'met': u'1043205'},
{u'index': 2,
u'no': 'B',
u'met': u'000031043206'},
{u'index': 3,
u'no': 'C',
u'met': u'0031043207'}]
To JSONL
:
{u'index': 1, u'no': 'A', u'met': u'1043205'}
{u'index': 2, u'no': 'B', u'met': u'031043206'}
{u'index': 3, u'no': 'C', u'met': u'0031043207'}
我当前的解决方案是将 JSON 文件作为文本文件读取,并从开头删除 [
]
从结尾删除 —。因此,在每一行上创建一个有效的 JSON 对象,而不是包含行的嵌套对象。
请问有没有更优雅的解决方案?我怀疑在文件上使用字符串操作可能会出错。
动机是将 json
文件读入 Spark 上的 RDD。请参阅相关问题 - 使用 Apache Spark 读取 JSON - `corrupt_record`
原文由 LearningSlowly 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的输入似乎是一系列 Python 对象;它肯定不是有效的 JSON 文档。
如果你有一个 Python 字典列表,那么你所要做的就是将每个条目分别转储到一个文件中,然后是一个换行符:
json
模块的默认配置是输出不嵌入换行符的 JSON。假设你的
A
,B
和C
名称是真正的字符串,将产生:如果您从包含条目列表的 JSON 文档开始,只需首先使用
json.load()
/json.loads()
解析该文档。