我有一串json数据,尽管有时它是“常规” json,有时数据是json行格式。这是我正在测试以查看它是哪种格式的当前方法:
json_newlines = all([_line.strip()[-1].endswith((']', '}')) for _line in file_data.split('\n') if _line.strip()])
是否有更好的方法来执行此操作,或者上述方法似乎是个好方法?
答案 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