Package org.apache.groovy.json.internal

# Class JsonParserLax

java.lang.Object
org.apache.groovy.json.internal.BaseJsonParser
org.apache.groovy.json.internal.JsonParserCharArray
org.apache.groovy.json.internal.JsonParserLax

All Implemented Interfaces:
  `JsonParser`

public class JsonParserLax extends JsonParserCharArray
JSON parser variant that also accepts comments, single quotes, and unquoted strings.

- ## Field Summary

  ### Fields inherited from class org.apache.groovy.json.internal.JsonParserCharArray

  `__currentChar, __index, charArray, FALSE, NULL, TRUE`

  ### Fields inherited from class org.apache.groovy.json.internal.BaseJsonParser

  `ALPHA_0, ALPHA_1, ALPHA_2, ALPHA_3, ALPHA_4, ALPHA_5, ALPHA_6, ALPHA_7, ALPHA_8, ALPHA_9, bufSize, charset, CLOSED_BRACKET, CLOSED_CURLY, COLON, COMMA, DECIMAL_POINT, DEFAULT_MAX_NESTING_DEPTH, DEFAULT_MAX_NUMBER_LENGTH, DOUBLE_QUOTE, ESCAPE, internedKeysCache, internKeys, LETTER_BIG_E, LETTER_E, maxNestingDepth, maxNumberLength, MINUS, PLUS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JsonParserLax()`
  Creates a lax parser with eager value containers and lazy chopping.
  `JsonParserLax(boolean useValues)`
  Creates a lax parser with the supplied value-container mode.
  `JsonParserLax(boolean useValues, boolean chop)`
  Creates a lax parser with explicit chopping behavior.
  `JsonParserLax(boolean useValues, boolean chop, boolean lazyChop)`
  Creates a lax parser with explicit lazy chopping behavior.
  `JsonParserLax(boolean useValues, boolean chop, boolean lazyChop, JsonDateHandling defaultDateHandling)`
  Creates a lax parser with full overlay configuration.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected final Object`
  `decodeFromChars(char[] cs)`
  Parses a character buffer and unwraps top-level container values.
  `protected final Value`
  `decodeNumberLax(boolean minus)`
  Decodes a number from a JSON value.
  `protected final Object`
  `decodeValue()`
  Decodes the next value using the parser's lax JSON rules.

  ### Methods inherited from class org.apache.groovy.json.internal.JsonParserCharArray

  `complain, currentChar, decodeFalse, decodeJsonArray, decodeJsonObject, decodeNull, decodeTrue, exceptionDetails, hasCurrent, hasMore, nextChar, parse, skipWhiteSpace`

  ### Methods inherited from class org.apache.groovy.json.internal.BaseJsonParser

  `charDescription, checkNumberLength, enterNesting, exitNesting, findEndQuote, getMaxNestingDepth, getMaxNumberLength, hasEscapeChar, isDecimalChar, isDelimiter, isDoubleQuote, isEscape, isNumberDigit, parse, parse, parse, parse, parse, parse, parse, parse, resetNesting, setCharset, setMaxNestingDepth, setMaxNumberLength`

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

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

- ## Constructor Details

  - ### JsonParserLax

    public JsonParserLax()
    Creates a lax parser with eager value containers and lazy chopping.

  - ### JsonParserLax

    public JsonParserLax(boolean useValues)
    Creates a lax parser with the supplied value-container mode.
    Parameters:
      `useValues` - whether to use eager `Value` containers

  - ### JsonParserLax

    public JsonParserLax(boolean useValues, boolean chop)
    Creates a lax parser with explicit chopping behavior.
    Parameters:
      `useValues` - whether to use eager `Value` containers
      `chop` - whether to eagerly copy overlay slices

  - ### JsonParserLax

    public JsonParserLax(boolean useValues, boolean chop, boolean lazyChop)
    Creates a lax parser with explicit lazy chopping behavior.
    Parameters:
      `useValues` - whether to use eager `Value` containers
      `chop` - whether to eagerly copy overlay slices
      `lazyChop` - whether to defer chopping until values are accessed

  - ### JsonParserLax

    public JsonParserLax(boolean useValues, boolean chop, boolean lazyChop, JsonDateHandling defaultDateHandling)
    Creates a lax parser with full overlay configuration.
    Parameters:
      `useValues` - whether to use eager `Value` containers
      `chop` - whether to eagerly copy overlay slices
      `lazyChop` - whether to defer chopping until values are accessed
      `defaultDateHandling` - what a date-like string should become

- ## Method Details

  - ### decodeValue

    protected final Object decodeValue()
    Decodes the next value using the parser's lax JSON rules.
    Overrides:
      `decodeValue` in class `JsonParserCharArray`
    Returns:
      parsed Groovy JSON value or overlay value

  - ### decodeNumberLax

    protected final Value decodeNumberLax(boolean minus)
    Decodes a number from a JSON value. If at any point it is determined that the value is not a valid number the value is treated as a `String`.
    Parameters:
      `minus` - indicate whether the number is negative
    Returns:
      a number, or `String` if not a valid number

  - ### decodeFromChars

    protected final Object decodeFromChars(char[] cs)
    Parses a character buffer and unwraps top-level container values.
    Overrides:
      `decodeFromChars` in class `JsonParserCharArray`
    Parameters:
      `cs` - JSON content to parse
    Returns:
      parsed Groovy JSON value