In [3]:
from jsonstreamer import JSONStreamer

json_object = """
    {
        "fruits":["apple","banana", "cherry"],
        "calories":[100,200,50]
    }
"""

json_array = """
    [1,2,true,[4,5],"a"]
"""

def _catch_all(event_name, *args):
    print('\t{} : {}'.format(event_name, args))

print("\nParsing the json object:")
streamer = JSONStreamer()
streamer.add_catch_all_listener(_catch_all)
streamer.consume(json_object[0:10])
streamer.consume(json_object[10:])
streamer.close()

print("\nParsing the json array:")
streamer = JSONStreamer()
streamer.add_catch_all_listener(_catch_all)
streamer.consume(json_array[0:5])
streamer.consume(json_array[5:])
streamer.close()


Parsing the json object:
	doc_start : ()
	object_start : ()
	key : ('fruits',)
	array_start : ()
	element : ('apple',)
	element : ('banana',)
	element : ('cherry',)
	array_end : ()
	key : ('calories',)
	array_start : ()
	element : (100,)
	element : (200,)
	element : (50,)
	array_end : ()
	object_end : ()
	doc_end : ()

Parsing the json array:
	doc_start : ()
	array_start : ()
	element : (1,)
	element : (2,)
	element : (True,)
	array_start : ()
	element : (4,)
	element : (5,)
	array_end : ()
	element : ('a',)
	array_end : ()
	doc_end : ()

In [3]:


In [4]:
from jsonstreamer import ObjectStreamer

print("\nParsing the json object:")
object_streamer = ObjectStreamer()
object_streamer.add_catch_all_listener(_catch_all)
object_streamer.consume(json_object[0:9])
object_streamer.consume(json_object[9:])
object_streamer.close()

print("\nParsing the json array:")
object_streamer = ObjectStreamer()
object_streamer.add_catch_all_listener(_catch_all)
object_streamer.consume(json_array[0:4])
object_streamer.consume(json_array[4:])
object_streamer.close()


Parsing the json object:
	object_stream_start : ()
	pair : (('fruits', ['apple', 'banana', 'cherry']),)
	pair : (('calories', [100, 200, 50]),)
	object_stream_end : ()

Parsing the json array:
	array_stream_start : ()
	element : (1,)
	element : (2,)
	element : (True,)
	element : ([4, 5],)
	element : ('a',)
	array_stream_end : ()

In [13]:
class MyClass:
    
    def __init__(self):
        self._obj_streamer = ObjectStreamer()
        self._obj_streamer.auto_listen(self)
        
    def _on_object_stream_start(self):
        print ('Root Object Started')
        
    def _on_pair(self, pair):
        print('Key: {} - Value: {}'.format(pair[0],pair[1]))
        
    def consume(self, data):
        self._obj_streamer.consume(data)
        
        
m = MyClass()
m.consume(json_object)


Root Object Started
Key: fruits - Value: ['apple', 'banana', 'cherry']
Key: calories - Value: [100, 200, 50]

In [22]:
ob_streamer = ObjectStreamer()

def pair_listener(pair):
    print('Explicit listener: Key: {} - Value: {}'.format(pair[0],pair[1]))
    
ob_streamer.add_listener('pair', pair_listener)
ob_streamer.consume(json_object)


Explicit listener: Key: fruits - Value: ['apple', 'banana', 'cherry']
Explicit listener: Key: calories - Value: [100, 200, 50]

In [ ]: