-
-
Notifications
You must be signed in to change notification settings - Fork 51
Open
Description
I've noticed that when iteratively parsing a json stream character by character 'incomplete' floats are 'stepped' over:
import json
import jiter
obj = {'float': 1.0}
obj_json = json.dumps(obj)
token_stream = []
sub = ''
for c in obj_json:
sub += c
token_stream.append(sub)
for mode in ['trailing-strings', 'on']:
for stream in token_stream:
parsed = jiter.from_json(stream.encode(), partial_mode=mode)
print(f'{mode}: {stream} -> {parsed}')
print('\n')prints the following output:
trailing-strings: { -> {}
trailing-strings: {" -> {}
trailing-strings: {"f -> {}
trailing-strings: {"fl -> {}
trailing-strings: {"flo -> {}
trailing-strings: {"floa -> {}
trailing-strings: {"float -> {}
trailing-strings: {"float" -> {}
trailing-strings: {"float": -> {}
trailing-strings: {"float": -> {}
trailing-strings: {"float": 1 -> {'float': 1}
trailing-strings: {"float": 1. -> {}
trailing-strings: {"float": 1.0 -> {'float': 1.0}
trailing-strings: {"float": 1.0} -> {'float': 1.0}
on: { -> {}
on: {" -> {}
on: {"f -> {}
on: {"fl -> {}
on: {"flo -> {}
on: {"floa -> {}
on: {"float -> {}
on: {"float" -> {}
on: {"float": -> {}
on: {"float": -> {}
on: {"float": 1 -> {'float': 1}
on: {"float": 1. -> {}
on: {"float": 1.0 -> {'float': 1.0}
on: {"float": 1.0} -> {'float': 1.0}
I'd suggest to coerce 1. into the float 1.0 (or expose an option to enable that)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels