Package groovy.json

## Class JsonLexer

- java.lang.Object
- - groovy.json.JsonLexer

- All Implemented Interfaces:
    `Iterator<JsonToken>`

      public class JsonLexer
      extends Object
      implements Iterator<JsonToken>

  The lexer reads JSON tokens in a streaming fashion from the underlying reader.
  Since:
    1.8.0

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JsonLexer​(Reader reader)` | Instantiates a lexer with a reader from which to read JSON tokens.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `LineColumnReader` | `getReader()` | Underlying reader from which to read the JSON tokens.
    `boolean` | `hasNext()` | Iterator method to know if another token follows, or if we've reached the end of the stream.
    `JsonToken` | `next()` | Iterator method to get the next token of the stream.
    `JsonToken` | `nextToken()` |
    `void` | `remove()` | Method not implemented.
    `int` | `skipWhitespace()` | Skips all the whitespace characters and moves the cursor to the next non-space character.
    `static String` | `unescape​(String input)` | Replace unicode escape and other control characters with real characters

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.util.Iterator

      `forEachRemaining`

- - ### Constructor Detail

    - #### JsonLexer

          public JsonLexer​(Reader reader)

      Instantiates a lexer with a reader from which to read JSON tokens. Under the hood, the reader is wrapped in a `LineColumnReader`, for line and column information, unless it's already an instance of that class.
      Parameters:
        `reader` - underlying reader

  - ### Method Detail

    - #### getReader

          public LineColumnReader getReader()

      Underlying reader from which to read the JSON tokens. This reader is an instance of `LineColumnReader`, to keep track of line and column positions.

    - #### nextToken

          public JsonToken nextToken()

      Returns:
        the next token from the stream

    - #### unescape

          public static String unescape​(String input)

      Replace unicode escape and other control characters with real characters
      Parameters:
        `input` - text
      Returns:
        input text without the escaping

    - #### skipWhitespace

          public int skipWhitespace()

      Skips all the whitespace characters and moves the cursor to the next non-space character.

    - #### hasNext

          public boolean hasNext()

      Iterator method to know if another token follows, or if we've reached the end of the stream.
      Specified by:
        `hasNext` in interface `Iterator<JsonToken>`
      Returns:
        true if there are more tokens

    - #### next

          public JsonToken next()

      Iterator method to get the next token of the stream.
      Specified by:
        `next` in interface `Iterator<JsonToken>`
      Returns:
        the next token

    - #### remove

          public void remove()

      Method not implemented.
      Specified by:
        `remove` in interface `Iterator<JsonToken>`
      Throws:
        `UnsupportedOperationException`