I also wrote Json parsing bytes by bytes in JMVC. For JSON, I recursed and serialized Java objects into Json pairs.
Reading Json token is reading Json stream.
Each time, one byte or char is read, identify what should be done when a certain JSON rule is met for that char, read out different types of data, and assemble them into a collection for processing,