你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
JsonReader 类
- java.
lang. Object - com.
azure. json. JsonReader
- com.
实现
public abstract class JsonReader
implements Closeable
以令牌流的形式读取 JSON 值。
的 JsonReader 实例是使用 的 JsonProvider 实例或使用 中的 JsonProviders实用工具方法创建的。
构造函数摘要
构造函数 | 说明 |
---|---|
JsonReader() |
创建 JsonReader 的实例。 |
方法摘要
方法继承自 java.lang.Object
构造函数详细信息
JsonReader
public JsonReader()
创建 JsonReader 的实例。
方法详细信息
getNullable
public final T
用于读取可为空类型的便捷方法。
currentToken()如果 返回为 NULL null,则JsonReader将其传递到 nonNullGetter
函数以获取值。 实际上,这是 get*NullableValue 方法的泛型。
Parameters:
Returns:
Throws:
readArray
public final List
读取 JSON 数组。
如果 为 null, currentToken() 则为 nextToken()。 如果起始令牌仍为 null, NULL 则返回 null。 如果令牌是 除 之外 START_ARRAY 的任何内容, IllegalStateException 则会引发 。
为读取元素准备 JSON 流后,将获取元素令牌,并将其传递到 JsonReader 以 elementReaderFunc
处理读取数组的元素。 如果数组没有元素,则将返回空列表。
如果应读取 JSON 对象,请使用 readObject(ReadValueCallback<JsonReader,T> objectReaderFunc) ,或者如果应读取 JSON 映射,请使用 readMap(ReadValueCallback<JsonReader,T> valueReaderFunc)。
Parameters:
Returns:
Throws:
readMap
public final Map
读取 JSON 映射。
如果 为 null, currentToken() 则为 nextToken()。 如果起始令牌仍为 null, NULL 则返回 null。 如果令牌是 除 之外 START_OBJECT 的任何内容, IllegalStateException 则会引发 。
为键值读取准备 JSON 流后,将获取下一个令牌,并将字段名称作为密钥读取,然后获取之后的下一个令牌,并将其传递到 JsonReadervalueReaderFunc
中以处理读取键值对的值。 如果对象没有元素,则将返回空映射。
如果应读取 JSON 对象,请使用 readObject(ReadValueCallback<JsonReader,T> objectReaderFunc) ,或者如果应读取 JSON 数组,请使用 readArray(ReadValueCallback<JsonReader,T> elementReaderFunc)。
Parameters:
Returns:
Throws:
readObject
public final T
读取 JSON 对象。
如果 为 null, currentToken() 则为 nextToken()。 如果起始令牌仍为 null, NULL 则返回 null。 如果令牌是 除 之外 START_OBJECT 的任何内容, IllegalStateException 则会引发 。
为读取对象准备 JSON 流后,将获取下一个令牌,并将其传递到 JsonReader 以 objectReaderFunc
处理读取对象。
如果应读取 JSON 数组,请使用 readArray(ReadValueCallback<JsonReader,T> elementReaderFunc) ,或者如果应读取 JSON 映射,请使用 readMap(ReadValueCallback<JsonReader,T> valueReaderFunc)。
Parameters:
Returns:
Throws:
bufferObject
public abstract JsonReader bufferObject()
读取并返回 指向的当前 JSON 对象 JsonReader 。 这将改变此 JsonReader的当前位置。
currentToken()如果 不是START_OBJECTFIELD_NAMEIllegalStateException,或将引发 。
如果 为 ,currentToken()FIELD_NAME则会创建一个 JSON 对象,其中第一个 JSON 字段是currentToken()字段,这意味着可以从 JSON 对象的中间调用,以创建一个新的 JSON 对象,其中只有一部分字段 () 调用方法时剩余的字段。
返回的 JsonReader 能够 reset() 重播基础 JSON 流。
Returns:
Throws:
close
currentToken
getBinary
getBoolean
public abstract boolean getBoolean()
如果读取器当前指向 BOOLEAN 令牌,则获取布尔值。
如果读取器指向任何其他标记类型, IllegalStateException 则会引发 。
如果 Boolean 应读取,请使用 getNullable(ReadValueCallback<JsonReader,T> nonNullGetter)。
Returns:
Throws:
getDouble
public abstract double getDouble()
如果读取器当前指向 或 STRING,NUMBER则获取双精度值。
STRING 如果基础字符串值无法转换为双精度值,将引发 NumberFormatException 。
所有其他 JsonToken 类型都将引发 IllegalStateException。
如果 Double 应读取,请使用 getNullable(ReadValueCallback<JsonReader,T> nonNullGetter)。
Returns:
Throws:
getFieldName
public abstract String getFieldName()
如果读取器当前指向 , FIELD_NAME则获取字段名称。
所有其他 JsonToken 类型都将引发 IllegalStateException。
Returns:
Throws:
getFloat
public abstract float getFloat()
如果读取器当前指向 或 STRING,NUMBER则获取浮点值。
STRING 如果基础字符串值无法转换为浮点值,将引发 NumberFormatException 。
所有其他 JsonToken 类型都将引发 IllegalStateException。
如果 Float 应读取,请使用 getNullable(ReadValueCallback<JsonReader,T> nonNullGetter)。
Returns:
Throws:
getInt
public abstract int getInt()
如果读取器当前指向 或 STRING,NUMBER则获取 int 值。
STRING 如果基础字符串值无法转换为 int,将引发 NumberFormatException 。
所有其他 JsonToken 类型都将引发 IllegalStateException。
如果 Integer 应读取,请使用 getNullable(ReadValueCallback<JsonReader,T> nonNullGetter)。
Returns:
Throws:
getLong
public abstract long getLong()
如果读取器当前指向 或 STRING,NUMBER则获取 long 值。
STRING 如果基础字符串值无法转换为 long,将引发 NumberFormatException 。
所有其他 JsonToken 类型都将引发 IllegalStateException。
如果 Long 应读取,请使用 getNullable(ReadValueCallback<JsonReader,T> nonNullGetter)。
Returns:
Throws:
getRawText
public String getRawText()
获取 的原始 currentToken()文本值。
下面介绍了每种 JsonToken 类型的处理方式:
- START_OBJECT -> {
- END_OBJECT -> }
- START_ARRAY -> [
- END_ARRAY -> ]
- FIELD_NAME ->getFieldName() 保留 JSON 编码和带引号的字符
- BOOLEAN -> String.valueOf getBoolean()
- NULL -> “null”
- STRING ->getString() 保留 JSON 编码和带引号的字符
- NUMBER -> String.valueOf getString()
如果当前令牌为 null, IllegalStateException 则会引发 。
Returns:
Throws:
getString
getText
public final String getText()
获取 的文本 currentToken()值。
下面介绍了每种 JsonToken 类型的处理方式:
- START_OBJECT -> {
- END_OBJECT -> }
- START_ARRAY -> [
- END_ARRAY -> ]
- FIELD_NAME ->getFieldName()
- BOOLEAN -> String.valueOf getBoolean()
- NULL -> “null”
- STRING ->getString()
- NUMBER -> String.valueOf getString()
如果当前令牌为 null, IllegalStateException 则会引发 。
Returns:
Throws:
isEndArrayOrObject
isResetSupported
isStartArrayOrObject
nextToken
readChildren
public final String readChildren()
如果当前令牌为 START_ARRAY 或 START_OBJECT,则以递归方式读取 JSON 令牌子流。
如果 不是START_OBJECT,currentToken()则START_ARRAY不会读取任何内容。
Returns:
Throws:
readChildren
public final void readChildren(StringBuilder buffer)
如果当前令牌是 START_ARRAY 或 START_OBJECT 传入 StringBuilder的 ,则以递归方式读取 JSON 令牌子流。
如果 不是START_OBJECT,currentToken()则START_ARRAY不会读取任何内容。
Parameters:
Throws:
buffer
为 null。
readRemainingFieldsAsJsonObject
public final String readRemainingFieldsAsJsonObject()
将当前 JSON 对象中的剩余字段作为 JSON 对象读取。
如果 为 START_OBJECT ,currentToken()则其函数与 readChildren()相同。 如果 为 ,currentToken()FIELD_NAME则创建一个 JSON 对象,其中第一个字段是当前字段,并读取 JSON 对象中的剩余字段。
如果 不是START_OBJECT,currentToken()则FIELD_NAME不会读取任何内容。
Returns:
Throws:
readRemainingFieldsAsJsonObject
public final void readRemainingFieldsAsJsonObject(StringBuilder buffer)
将当前 JSON 对象中的剩余字段作为 JSON 对象读取。
如果 为 START_OBJECT ,currentToken()则其函数与 readChildren(StringBuilder buffer)相同。 如果 为 ,currentToken()FIELD_NAME则创建一个 JSON 对象,其中第一个字段是当前字段,并读取 JSON 对象中的剩余字段。
如果 不是START_OBJECT,currentToken()则FIELD_NAME不会读取任何内容。
Parameters:
Throws:
buffer
为 null。
readUntyped
public final Object readUntyped()
读取非类型化对象。
如果 为 null, currentToken() 则为 nextToken()。
如果起始标记为 END_ARRAY、 END_OBJECT或 FIELD_NAMEIllegalStateException ,则会引发 ,因为这些是读取未知类型的无效起点。 如果非类型化对象已深入嵌套, IllegalStateException 则还会引发 ,以防止堆栈溢出异常。
返回的对象将是下列对象之一:
- 如果起始令牌为 null,则为 null,或者 NULL
- 如果起始令牌为 ,则为 true 或 false BOOLEAN
- int、long、float 或 double 之一是起始标记为 NUMBER,如果数字为整数,则将使用最小包含值
- 非类型化元素的数组(如果起始点为 ) START_ARRAY
- 如果起点为 ,则为字符串非类型化值的映射 START_OBJECT
Returns:
Throws:
reset
public abstract JsonReader reset()
创建 JSON 流开头的新 JsonReader 重置。
使用 isResetSupported() 确定是否 JsonReader 可以重置 。 如果调用了重置,并且不支持 IllegalStateException 重置,则会引发 。
Returns:
Throws:
skipChildren
public abstract void skipChildren()
如果当前令牌为 START_ARRAY 或 START_OBJECT,则递归跳过 JSON 令牌子流。
如果当前令牌不是数组或对象的开头,则此方法为 no-op。
Throws: