根据输入字符串确定json_newline格式

时间:2019-01-14 20:19:53

标签: python json python-3.x jsonlines

我有一串json数据,尽管有时它是“常规” json,有时数据是json行格式。这是我正在测试以查看它是哪种格式的当前方法:

json_newlines = all([_line.strip()[-1].endswith((']', '}')) for _line in file_data.split('\n') if _line.strip()])

是否有更好的方法来执行此操作,或者上述方法似乎是个好方法?

1 个答案:

答案 0 :(得分:0)

您可以使用内置的json库来尝试加载常规JSON,如果失败(不是正确的“常规”格式),请尝试以下操作:jsonlines

您当前的解决方案没有错,但是缺点是您必须(手动)解析整个字符串以检查是否为格式,我的建议是委托内置json上的工作库。

示例:

import json
import jsonlines

loaded_data = {}

try:
    loaded_data = json.loads(json_data)
except ValueError as err:
    try:
        # Try to read the data here with.
        lines = json_data.split('\n')
        reader = jsonlines.Reader(lines)
        # ...
        # Add values to loaded_data. 
    except jsonlines.InvalidLineError as err:
        # .. Handle error here.
finally:
    # Work with loaded_data