【发布时间】:2016-12-19 07:17:21
【问题描述】:
我希望将标准 JSON 对象操作为一个对象,其中每一行都必须包含一个单独的、自包含的有效 JSON 对象。见JSON Lines
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。查看相关问题 - Reading JSON with Apache Spark - `corrupt_record`
【问题讨论】:
-
这不是有效的 JSON 输入,也不是有效的 JSON 输出。您在此处处理 Python 对象,而不是 JSON 序列化。即使您的输出是有效的 JSON,它也不是有效的 JSONL,因为您有 尾随逗号。
-
另外,如果输出中的对象是有效的 JSON,则不会有尾随逗号。