0

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

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

有没有更好的方法来做到这一点,或者上面的方法似乎是个好方法?

4

1 回答 1

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
于 2019-01-14T22:17:43.810 回答