private CloseMethod parseEntryInto(Map<String, Object> object) throws IOException {
        final StringBuilder keyBuilder = new StringBuilder();
        
        parseKey: while (true) {
            switch (next()) {
                
                // If this is an escape character, add the following character
                // without parsing it.
                case 0x5C : // backslash
                    keyBuilder.append(Character.toChars(next()));
                    continue;
                    
                // If this terminates the key, break the loop.
                case 0x22 : // " (end key)
                    break parseKey;
                    
                // Every other character should be added to the key.
                default :
                    keyBuilder.append(Character.toChars(character));
            }
        }
        
        final String key = keyBuilder.toString();
        
        // Read the assignment operator
        if (nextNonBlankspace() != 0x3A) { // :
            throw unexpectedCharacterException();
        }
        
        // Read the value
        switch (nextNonBlankspace()) {
            case 0x7B : // { (begin parsing object)
                putIfUniqueOrThrow(object, key, parseObject());
                return CloseMethod.NOT_DECIDED;
                
            case 0x5B : // [ (begin parsing array)
                putIfUniqueOrThrow(object, key, parseArray());
                return CloseMethod.NOT_DECIDED;
                
            case 0x22 : // " (begin parsing string)
                putIfUniqueOrThrow(object, key, parseString());
                return CloseMethod.NOT_DECIDED;
                
            case 0x66 : // f (begin parsing false)
                putIfUniqueOrThrow(object, key, parseFalse());
                return CloseMethod.NOT_DECIDED;
                
            case 0x74 : // t (begin parsing true)
                putIfUniqueOrThrow(object, key, parseTrue());
                return CloseMethod.NOT_DECIDED;
                
            case 0x6E : // n (begin parsing null)
                putIfUniqueOrThrow(object, key, parseNull());
                return CloseMethod.NOT_DECIDED;
                
            // Digit '0 - 9'
            case 0x30 : case 0x31 : case 0x32 : case 0x33 : case 0x34 :
            case 0x35 : case 0x36 : case 0x37 : case 0x38 : case 0x39 :
            case 0x2E : // . (decimal sign)
            case 0x2D : // - (minus sign)
                return parseNumber(num -> putIfUniqueOrThrow(object, key, num));
                
            default :
                throw unexpectedCharacterException();
        }
    }
Internal class that parses a stream of JSON characters into an object
representation.
<p>
This implementation includes a line and column counter that makes it easier
to debug an erroneous JSON string. These might add additional overhead to the
parsing time and should therefore only be used if the input is expected to
have errors.

@author Emil Forslund
@since  1.0.0
common-parent/json/src/main/java/com/speedment/common/json/internal/JsonDeserializer.java