org.redkale.convert.json

## 类 JsonReader

- java.lang.Object
- - org.redkale.convert.Reader
  - - org.redkale.convert.json.JsonReader

- 直接已知子类:
    JsonByteBufferReader

      public class JsonReader
      extends Reader

  详情见: http://www.redkale.org

- - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `protected int` | `position`

    - ### 从类继承的字段 org.redkale.convert.Reader

      `fieldIndex, SIGN_NOLENGTH, SIGN_NULL`

  - ### 构造器概要

    构造器
    构造器和说明
    `JsonReader()`
    `JsonReader(char[] text)`
    `JsonReader(char[] text, int start, int len)`
    `JsonReader(java.lang.String json)`

  - ### 方法概要

    所有方法 静态方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected void` | `backChar(char ch)` 回退最后读取的字符
    `void` | `close()`
    `static ObjectPool<JsonReader>` | `createPool(int max)`
    `boolean` | `hasNext()` 判断对象是否存在下一个属性或者数组是否存在下一个元素
    `protected char` | `nextChar()` 读取下一个字符， 不跳过空白字符
    `protected char` | `nextGoodChar()` 跳过空白字符， 返回一个非空白字符
    `int` | `readArrayB()` 判断下一个非空白字符是否为[
    `void` | `readArrayE()` 读取数组的尾端
    `void` | `readBlank()` 判断下一个非空白字符是否:
    `boolean` | `readBoolean()` 读取一个boolean值
    `byte` | `readByte()` 读取一个byte值
    `char` | `readChar()` 读取一个char值
    `java.lang.String` | `readClassName()` 读取反解析对象的类名
    `double` | `readDouble()` 读取一个double值
    `DeMember` | `readFieldName(DeMember[] members)` 根据字段读取字段对应的DeMember
    `float` | `readFloat()` 读取一个float值
    `int` | `readInt()` 读取一个int值
    `long` | `readLong()` 读取一个long值
    `int` | `readMapB()` 判断下一个非空白字符是否为{
    `void` | `readMapE()` 读取数组的尾端
    `java.lang.String` | `readObjectB(java.lang.Class clazz)` 判断下一个非空白字符是否为{
    `void` | `readObjectE(java.lang.Class clazz)` 读取对象的尾端
    `short` | `readShort()` 读取一个short值
    `java.lang.String` | `readSmallString()` 读取无转义字符长度不超过255的字符串， 例如枚举值、字段名、类名字符串等
    `java.lang.String` | `readString()` 读取字符串， 必须是"或者'包围的字符串值
    `protected boolean` | `recycle()`
    `void` | `seek(java.lang.String key)` 找到指定的属性值 例如: {id : 1, data : { name : 'a', items : [1,2,3]}} seek('data.items') 直接跳转到 [1,2,3];
    `void` | `setText(char[] text)`
    `void` | `setText(char[] text, int start, int len)`
    `void` | `setText(java.lang.String text)`
    `void` | `skipValue()` 跳过属性的值

    - ### 从类继承的方法 java.lang.Object

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

- - ### 字段详细资料

    - #### position

          protected int position

  - ### 构造器详细资料

    - #### JsonReader

          public JsonReader()

    - #### JsonReader

          public JsonReader(java.lang.String json)

    - #### JsonReader

          public JsonReader(char[] text)

    - #### JsonReader

          public JsonReader(char[] text,
                            int start,
                            int len)

  - ### 方法详细资料

    - #### createPool

          public static ObjectPool<JsonReader> createPool(int max)

    - #### setText

          public final void setText(java.lang.String text)

    - #### setText

          public final void setText(char[] text)

    - #### setText

          public final void setText(char[] text,
                                    int start,
                                    int len)

    - #### recycle

          protected boolean recycle()

    - #### close

          public void close()

    - #### seek

          public final void seek(java.lang.String key)

      找到指定的属性值 例如: {id : 1, data : { name : 'a', items : [1,2,3]}} seek('data.items') 直接跳转到 [1,2,3];
      参数:
        `key` - 指定的属性名

    - #### skipValue

          public final void skipValue()

      跳过属性的值
      指定者:
        `skipValue` 在类中 `Reader`

    - #### nextChar

          protected char nextChar()

      读取下一个字符， 不跳过空白字符
      返回:
        空白字符或有效字符

    - #### nextGoodChar

          protected char nextGoodChar()

      跳过空白字符， 返回一个非空白字符
      返回:
        有效字符

    - #### backChar

          protected void backChar(char ch)

      回退最后读取的字符
      参数:
        `ch` - 后退的字符

    - #### readObjectB

          public java.lang.String readObjectB(java.lang.Class clazz)

      判断下一个非空白字符是否为{
      覆盖:
        `readObjectB` 在类中 `Reader`
      参数:
        `clazz` - 类名
      返回:
        返回 null 表示对象为null， 返回空字符串表示当前class与返回的class一致，返回非空字符串表示class是当前class的子类。

    - #### readObjectE

          public final void readObjectE(java.lang.Class clazz)

      从类复制的说明: `Reader`
      读取对象的尾端
      指定者:
        `readObjectE` 在类中 `Reader`
      参数:
        `clazz` - 类名

    - #### readMapB

          public final int readMapB()

      判断下一个非空白字符是否为{
      指定者:
        `readMapB` 在类中 `Reader`
      返回:
        SIGN_NOLENGTH 或 SIGN_NULL

    - #### readMapE

          public final void readMapE()

      从类复制的说明: `Reader`
      读取数组的尾端
      指定者:
        `readMapE` 在类中 `Reader`

    - #### readArrayB

          public int readArrayB()

      判断下一个非空白字符是否为[
      指定者:
        `readArrayB` 在类中 `Reader`
      返回:
        SIGN_NOLENGTH 或 SIGN_NULL

    - #### readArrayE

          public final void readArrayE()

      从类复制的说明: `Reader`
      读取数组的尾端
      指定者:
        `readArrayE` 在类中 `Reader`

    - #### readBlank

          public void readBlank()

      判断下一个非空白字符是否:
      指定者:
        `readBlank` 在类中 `Reader`

    - #### hasNext

          public boolean hasNext()

      判断对象是否存在下一个属性或者数组是否存在下一个元素
      指定者:
        `hasNext` 在类中 `Reader`
      返回:
        是否存在

    - #### readClassName

          public final java.lang.String readClassName()

      从类复制的说明: `Reader`
      读取反解析对象的类名
      指定者:
        `readClassName` 在类中 `Reader`
      返回:
        类名

    - #### readSmallString

          public java.lang.String readSmallString()

      从类复制的说明: `Reader`
      读取无转义字符长度不超过255的字符串， 例如枚举值、字段名、类名字符串等
      指定者:
        `readSmallString` 在类中 `Reader`
      返回:
        String值

    - #### readInt

          public int readInt()

      读取一个int值
      指定者:
        `readInt` 在类中 `Reader`
      返回:
        int值

    - #### readLong

          public long readLong()

      读取一个long值
      指定者:
        `readLong` 在类中 `Reader`
      返回:
        long值

    - #### readFieldName

          public final DeMember readFieldName(DeMember[] members)

      从类复制的说明: `Reader`
      根据字段读取字段对应的DeMember
      指定者:
        `readFieldName` 在类中 `Reader`
      参数:
        `members` - DeMember的全量集合
      返回:
        匹配的DeMember

    - #### readBoolean

          public final boolean readBoolean()

      从类复制的说明: `Reader`
      读取一个boolean值
      指定者:
        `readBoolean` 在类中 `Reader`
      返回:
        boolean值

    - #### readByte

          public final byte readByte()

      从类复制的说明: `Reader`
      读取一个byte值
      指定者:
        `readByte` 在类中 `Reader`
      返回:
        byte值

    - #### readChar

          public final char readChar()

      从类复制的说明: `Reader`
      读取一个char值
      指定者:
        `readChar` 在类中 `Reader`
      返回:
        char值

    - #### readShort

          public final short readShort()

      从类复制的说明: `Reader`
      读取一个short值
      指定者:
        `readShort` 在类中 `Reader`
      返回:
        short值

    - #### readFloat

          public final float readFloat()

      从类复制的说明: `Reader`
      读取一个float值
      指定者:
        `readFloat` 在类中 `Reader`
      返回:
        float值

    - #### readDouble

          public final double readDouble()

      从类复制的说明: `Reader`
      读取一个double值
      指定者:
        `readDouble` 在类中 `Reader`
      返回:
        double值

    - #### readString

          public java.lang.String readString()

      读取字符串， 必须是"或者'包围的字符串值
      指定者:
        `readString` 在类中 `Reader`
      返回:
        String值