def __next__(self):
for line in self.handle:<EOL><INDENT>try:<EOL><INDENT>data = json.loads(line)<EOL>item = SBP.from_json_dict(data.pop('<STR_LIT:data>', data))<EOL>msg = self.dispatch(item, line)<EOL>yield (msg, data)<EOL><DEDENT>except (ValueError, UnicodeDecodeError):<EOL><INDENT>warn = "<STR_LIT>" % line<EOL>warnings.warn(warn, RuntimeWarning)<EOL><DEDENT><DEDENT>self.handle.seek(<NUM_LIT:0>, <NUM_LIT:0>)<EOL>
Return the next record tuple from log file containing
JSON-serialized SBP. If an unknown SBP message type is found,
it'll return the raw SBP. If EOF, throws exception and then
returns to start of file.

Returns
-------
Tuple(sbp MSG object, {'time':'ISO 8601 time'})
  Second item is for metadata. There used to be multiple fields and
  there could be more in the future.

Notes
-----
In practice it seems like a lot of times JSONLogIterator objects return
iterators instead of tuples due to weird usage of the class.