Commit 6b622beb by Dietmar Schinnerl

Added filtering of non-JSON lines.

parent fbdddc7c
......@@ -120,7 +120,7 @@ def json_loads(data):
def parse_json(raw_data):
''' this version for module return data only '''
data = filter_leading_garbage(raw_data)
data = filter_leading_non_json_lines(raw_data)
try:
return json.loads(data)
......@@ -420,11 +420,20 @@ def last_non_blank_line(lines):
return "" # we shouldn't come here (no lines?) but let's pretend nothing happend
# We can't return all lines here because calling code expects only one
# line. And since we don't know which line to return we return an empty
# line.
def line_needs_filtering(line):
return line.startswith('#') or (len(line) == 0)
def filter_leading_garbage(lines):
return lines
def is_valid_json_line(line):
return line.startswith('=') or line.startswith('{') or line.startswith('[')
def filter_leading_non_json_lines(lines):
''' we need to filter anything which starts not with '{', '[', ', '=' or is an empty line.
But we filter only leading lines since multiline JSON is valid. '''
filtered_lines = ''
no_more_filtering = False
for line in lines.splitlines():
if (no_more_filtering or is_valid_json_line(line)):
no_more_filtering = True
filtered_lines += line + '\n'
return filtered_lines
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment