org.noggit

## Class JSONParser

- java.lang.Object
- - org.noggit.JSONParser

    public class JSONParser
    extends Object

### Nested Class Summary

Nested Classes
`static class` `JSONParser.ParseException`

### Field Summary

Fields
`static int` `ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER`
`static int` `ALLOW_COMMENTS` Flags to control parsing behavior
`static int` `ALLOW_EXTRA_COMMAS` ALLOW_EXTRA_COMMAS causes any number of extra commas in arrays and objects to be ignored Note that a trailing comma in [] would be [,] (hence calling the feature "trailing" commas is either limiting or misleading.
`static int` `ALLOW_MISSING_COLON_COMMA_BEFORE_OBJECT`
`static int` `ALLOW_SINGLE_QUOTES`
`static int` `ALLOW_UNQUOTED_KEYS`
`static int` `ALLOW_UNQUOTED_STRING_VALUES`
`static int` `ARRAY_END` Event indicating the end of a JSON array
`static int` `ARRAY_START` Event indicating the start of a JSON array
`static int` `BIGNUMBER` Event indicating a JSON number value that was not produced by toString of any Java primitive numerics such as Double or Long.
`static int` `BOOLEAN` Event indicating a JSON boolean
`protected char[]` `buf`
`protected int` `end`
`protected boolean` `eof`
`static int` `EOF` Event indicating the end of input has been reached
`protected int` `event`
`protected int` `flags`
`static int` `FLAGS_DEFAULT`
`static int` `FLAGS_STRICT`
`protected long` `gpos`
`protected Reader` `in`
`static int` `LONG` Event indicating a JSON number value which fits into a signed 64 bit integer
`protected boolean` `missingOpeningBrace`
`static int` `NULL` Event indicating a JSON null
`static int` `NUMBER` Event indicating a JSON number value which has a fractional part or an exponent and with string length <= 23 chars not including sign.
`static int` `OBJECT_END` Event indicating the end of a JSON object
`static int` `OBJECT_START` Event indicating the start of a JSON object
`static int` `OPTIONAL_OUTER_BRACES`
`protected int` `start`
`static int` `STRING` Event indicating a JSON string value, including member names of objects
`protected int` `stringTerm`

### Constructor Summary

Constructors
Constructor and Description
`JSONParser(char[] data, int start, int end)`
`JSONParser(Reader in)`
`JSONParser(Reader in, char[] buffer)`
`JSONParser(String data)`
`JSONParser(String data, int start, int end)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`protected JSONParser.ParseException` `err(String msg)`
`protected void` `fill()`
`boolean` `getBoolean()` Reads a boolean value
`protected int` `getChar()`
`protected int` `getCharExpected(int expected)`
`protected int` `getCharNWS()`
`protected int` `getCharNWS(int ch)`
`double` `getDouble()` Reads a number from the input stream and parses it as a double
`static String` `getEventString(int e)`
`int` `getFlags()`
`int` `getLevel()`
`long` `getLong()` Reads a number from the input stream and parses it as a long, only if the value will in fact fit into a signed 64 bit integer.
`protected void` `getNewlineComment()`
`void` `getNull()` Reads a null value
`CharArr` `getNumberChars()` Returns the characters of a JSON numeric value.
`void` `getNumberChars(CharArr output)` Reads a JSON numeric value into the output.
`long` `getPosition()`
`protected void` `getSlashComment()`
`String` `getString()` Returns the JSON string value, decoding any escaped characters.
`void` `getString(CharArr output)` Reads a JSON string into the output, decoding any escaped characters.
`CharArr` `getStringChars()` Returns the characters of a JSON string value, decoding any escaped characters.
`protected void` `handleNonDoubleQuoteString(int ch, boolean isName)`
`protected static boolean` `isWhitespace(int ch)` Returns true if the given character is considered to be whitespace.
`int` `lastEvent()`
`protected boolean` `matchBareWord(char[] arr)`
`int` `nextEvent()` Returns the next event encountered in the JSON stream, one of `STRING` `LONG` `NUMBER` `BIGNUMBER` `BOOLEAN` `NULL` `OBJECT_START` `OBJECT_END` `OBJECT_END` `ARRAY_START` `ARRAY_END` `EOF`
`int` `setFlags(int flags)`
`String` `toString()`
`boolean` `wasKey()`

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

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

### Field Detail

#### STRING

    public static final int STRING

Event indicating a JSON string value, including member names of objects

See Also:
  Constant Field Values

#### LONG

    public static final int LONG

Event indicating a JSON number value which fits into a signed 64 bit integer

See Also:
  Constant Field Values

#### NUMBER

    public static final int NUMBER

Event indicating a JSON number value which has a fractional part or an exponent and with string length <= 23 chars not including sign. This covers all representations of normal values for Double.toString().

See Also:
  Constant Field Values

#### BIGNUMBER

    public static final int BIGNUMBER

Event indicating a JSON number value that was not produced by toString of any Java primitive numerics such as Double or Long. It is either an integer outside the range of a 64 bit signed integer, or a floating point value with a string representation of more than 23 chars.

See Also:
  Constant Field Values

#### BOOLEAN

    public static final int BOOLEAN

Event indicating a JSON boolean

See Also:
  Constant Field Values

#### NULL

    public static final int NULL

Event indicating a JSON null

See Also:
  Constant Field Values

#### OBJECT_START

    public static final int OBJECT_START

Event indicating the start of a JSON object

See Also:
  Constant Field Values

#### OBJECT_END

    public static final int OBJECT_END

Event indicating the end of a JSON object

See Also:
  Constant Field Values

#### ARRAY_START

    public static final int ARRAY_START

Event indicating the start of a JSON array

See Also:
  Constant Field Values

#### ARRAY_END

    public static final int ARRAY_END

Event indicating the end of a JSON array

See Also:
  Constant Field Values

#### EOF

    public static final int EOF

Event indicating the end of input has been reached

See Also:
  Constant Field Values

#### ALLOW_COMMENTS

    public static final int ALLOW_COMMENTS

Flags to control parsing behavior

See Also:
  Constant Field Values

#### ALLOW_SINGLE_QUOTES

    public static final int ALLOW_SINGLE_QUOTES

See Also:
  Constant Field Values

#### ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER

    public static final int ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER

See Also:
  Constant Field Values

#### ALLOW_UNQUOTED_KEYS

    public static final int ALLOW_UNQUOTED_KEYS

See Also:
  Constant Field Values

#### ALLOW_UNQUOTED_STRING_VALUES

    public static final int ALLOW_UNQUOTED_STRING_VALUES

See Also:
  Constant Field Values

#### ALLOW_EXTRA_COMMAS

    public static final int ALLOW_EXTRA_COMMAS

ALLOW_EXTRA_COMMAS causes any number of extra commas in arrays and objects to be ignored Note that a trailing comma in [] would be [,] (hence calling the feature "trailing" commas is either limiting or misleading. Since trailing commas is fundamentally incompatible with any future "fill-in-missing-values-with-null", it was decided to extend this feature to handle any number of extra commas.

See Also:
  Constant Field Values

#### ALLOW_MISSING_COLON_COMMA_BEFORE_OBJECT

    public static final int ALLOW_MISSING_COLON_COMMA_BEFORE_OBJECT

See Also:
  Constant Field Values

#### OPTIONAL_OUTER_BRACES

    public static final int OPTIONAL_OUTER_BRACES

See Also:
  Constant Field Values

#### FLAGS_STRICT

    public static final int FLAGS_STRICT

See Also:
  Constant Field Values

#### FLAGS_DEFAULT

    public static final int FLAGS_DEFAULT

See Also:
  Constant Field Values

#### flags

    protected int flags

#### buf

    protected final char[] buf

#### start

    protected int start

#### end

    protected int end

#### in

    protected final Reader in

#### eof

    protected boolean eof

#### gpos

    protected long gpos

#### event

    protected int event

#### stringTerm

    protected int stringTerm

#### missingOpeningBrace

    protected boolean missingOpeningBrace

### Constructor Detail

#### JSONParser

    public JSONParser(Reader in)

#### JSONParser

    public JSONParser(Reader in,
                      char[] buffer)

#### JSONParser

    public JSONParser(char[] data,
                      int start,
                      int end)

#### JSONParser

    public JSONParser(String data)

#### JSONParser

    public JSONParser(String data,
                      int start,
                      int end)

### Method Detail

#### getEventString

    public static String getEventString(int e)

#### getFlags

    public int getFlags()

#### setFlags

    public int setFlags(int flags)

#### fill

    protected void fill()
                 throws IOException

Throws:
  `IOException`

#### getChar

    protected int getChar()
                   throws IOException

Throws:
  `IOException`

#### isWhitespace

    protected static final boolean isWhitespace(int ch)

Returns true if the given character is considered to be whitespace. One difference between Java's Character.isWhitespace() is that this method considers a hard space (non-breaking space, or nbsp) to be whitespace.

#### getCharNWS

    protected int getCharNWS()
                      throws IOException

Throws:
  `IOException`

#### getCharNWS

    protected int getCharNWS(int ch)
                      throws IOException

Throws:
  `IOException`

#### getCharExpected

    protected int getCharExpected(int expected)
                           throws IOException

Throws:
  `IOException`

#### getNewlineComment

    protected void getNewlineComment()
                              throws IOException

Throws:
  `IOException`

#### getSlashComment

    protected void getSlashComment()
                            throws IOException

Throws:
  `IOException`

#### matchBareWord

    protected boolean matchBareWord(char[] arr)
                             throws IOException

Throws:
  `IOException`

#### err

    protected JSONParser.ParseException err(String msg)

#### handleNonDoubleQuoteString

    protected void handleNonDoubleQuoteString(int ch,
                                              boolean isName)
                                       throws IOException

Throws:
  `IOException`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`

#### nextEvent

    public int nextEvent()
                  throws IOException

Returns the next event encountered in the JSON stream, one of

- `STRING`
- `LONG`
- `NUMBER`
- `BIGNUMBER`
- `BOOLEAN`
- `NULL`
- `OBJECT_START`
- `OBJECT_END`
- `OBJECT_END`
- `ARRAY_START`
- `ARRAY_END`
- `EOF`

Throws:
  `IOException`

#### lastEvent

    public int lastEvent()

#### wasKey

    public boolean wasKey()

#### getString

    public String getString()
                     throws IOException

Returns the JSON string value, decoding any escaped characters.

Throws:
  `IOException`

#### getStringChars

    public CharArr getStringChars()
                           throws IOException

Returns the characters of a JSON string value, decoding any escaped characters. The underlying buffer of the returned `CharArr` should *not* be modified as it may be shared with the input buffer. The returned `CharArr` will only be valid up until the next JSONParser method is called. Any required data should be read before that point.

Throws:
  `IOException`

#### getString

    public void getString(CharArr output)
                   throws IOException

Reads a JSON string into the output, decoding any escaped characters.

Throws:
  `IOException`

#### getLong

    public long getLong()
                 throws IOException

Reads a number from the input stream and parses it as a long, only if the value will in fact fit into a signed 64 bit integer.

Throws:
  `IOException`

#### getDouble

    public double getDouble()
                     throws IOException

Reads a number from the input stream and parses it as a double

Throws:
  `IOException`

#### getNumberChars

    public CharArr getNumberChars()
                           throws IOException

Returns the characters of a JSON numeric value.

The underlying buffer of the returned `CharArr` should *not* be modified as it may be shared with the input buffer.

The returned `CharArr` will only be valid up until the next JSONParser method is called. Any required data should be read before that point.

Throws:
  `IOException`

#### getNumberChars

    public void getNumberChars(CharArr output)
                        throws IOException

Reads a JSON numeric value into the output.

Throws:
  `IOException`

#### getBoolean

    public boolean getBoolean()
                       throws IOException

Reads a boolean value

Throws:
  `IOException`

#### getNull

    public void getNull()
                 throws IOException

Reads a null value

Throws:
  `IOException`

#### getLevel

    public int getLevel()

Returns:
  the current nesting level, the number of parent objects or arrays.

#### getPosition

    public long getPosition()