@Override
    public String nextTextValue()
            throws IOException, JsonParseException
    {
        if (_currToken == JsonToken.FIELD_NAME) { // mostly copied from '_nextAfterName'
            _nameCopied = false;
            JsonToken t = _nextToken;
            _nextToken = null;
            _currToken = t;
            if (t == JsonToken.VALUE_STRING) {
                if (_tokenIncomplete) {
                    _tokenIncomplete = false;
                    _finishString();
                }
                return _textBuffer.contentsAsString();
            }
            if (t == JsonToken.START_ARRAY) {
                _parsingContext = _parsingContext.createChildArrayContext(_tokenInputRow, _tokenInputCol);
            } else if (t == JsonToken.START_OBJECT) {
                _parsingContext = _parsingContext.createChildObjectContext(_tokenInputRow, _tokenInputCol);
            }
            return null;
        }
        // !!! TODO: optimize this case as well
        return (nextToken() == JsonToken.VALUE_STRING) ? getText() : null;
    }
@Override
    public String nextTextValue()
            throws IOException, JsonParseException
    {
        if (_currToken == JsonToken.FIELD_NAME) { 
            _nameCopied = false;
            JsonToken t = _nextToken;
            _nextToken = null;
            _currToken = t;
            if (t == JsonToken.VALUE_STRING) {
                if (_tokenIncomplete) {
                    _tokenIncomplete = false;
                    _finishString();
                }
                return _textBuffer.contentsAsString();
            }
            if (t == JsonToken.START_ARRAY) {
                _parsingContext = _parsingContext.createChildArrayContext(_tokenInputRow, _tokenInputCol);
            } else if (t == JsonToken.START_OBJECT) {
                _parsingContext = _parsingContext.createChildObjectContext(_tokenInputRow, _tokenInputCol);
            }
            return null;
        }
        
        return (nextToken() == JsonToken.VALUE_STRING) ? getText() : null;
    }
@ Override public String nextTextValue ( ) throws IOException , JsonParseException { if ( _currToken == JsonToken . FIELD_NAME ) { // mostly copied from '_nextAfterName' _nameCopied = false ; JsonToken t = _nextToken ; _nextToken = null ; _currToken = t ; if ( t == JsonToken . VALUE_STRING ) { if ( _tokenIncomplete ) { _tokenIncomplete = false ; _finishString ( ) ; } return _textBuffer . contentsAsString ( ) ; } if ( t == JsonToken . START_ARRAY ) { _parsingContext = _parsingContext . createChildArrayContext ( _tokenInputRow , _tokenInputCol ) ; } else if ( t == JsonToken . START_OBJECT ) { _parsingContext = _parsingContext . createChildObjectContext ( _tokenInputRow , _tokenInputCol ) ; } return null ; } // !!! TODO: optimize this case as well return ( nextToken ( ) == JsonToken . VALUE_STRING ) ? getText ( ) : null ; }
note: identical to one in Utf8StreamParser
note : identical to one in Utf8StreamParser