文章目录
-
第五章 Caché JSON 快速参考动态实体方法 - 方法详细信息
本节列出所有可用的动态实体方法,简要地描述每个方法并提供进一步信息的链接。所有方法都可用于对象和数组,除了%Push()
和%Pop()
之外,%Push()
和%Pop()
只适用于数组。
%FromJSON()
给定一个JSON源,解析该源并返回一个数据类型为%DynamicAbstractObject
的对象,该对象包含已解析的JSON。如果解析过程中出现错误,将抛出异常。
classmethod %FromJSON(str) as %DynamicAbstractObject
参数
- str 输入的参数可以来自下列任何一个来源:
- 包含源的字符串值。
- 要从中读取源的流对象。
- 可以读取源代码的文件URI。该文件必须编码为UTF-8。
类引用:%DynamicAbstractObject.%FromJSON()
%Get()
给定一个有效的对象键或数组索引,返回该值。如果该值不存在,则返回一个空字符串“”
。
method %Get(key) as %CacheString
参数
- key 要检索的值的对象键或数组索引。数组索引必须作为标准整数值传递。数组索引从位置0开始。
类引用: %DynamicObject.%Get()
和 %DynamicArray.%Get()
%GetIterator()
返回一个%Iterator
器对象,允许对一个动态实体的所有成员进行迭代。
method %GetIterator() as %Iterator.AbstractIterator
类引用: %DynamicObject.%GetIterator()
, %DynamicArray.%GetIterator()
, %Iterator.Object
, %Iterator.Array
%GetNext()
%GetIterator()
返回的%Iterator
对象的方法。推进迭代器,如果迭代器位于有效元素上,则返回true;如果位于最后一个元素上,则返回false.键和值参数返回当前迭代器位置的有效元素的值。
method getNext(Output key, Output value) as %Integer
参数
- key 返回元素当前位置的对象键或数组索引
- value 返回元素在当前位置的值。
类引用: %Iterator.Object.%GetNext()
and %Iterator.Array.%GetNext()
%GetTypeOf()
给定有效的对象键或数组索引,返回表示该值的数据类型的字符串。
method %GetTypeOf(key) as %String
参数
- key 要测试的值的对象键或数组索引。
返回值
-
“null”
—JSON null -
“boolean”
——0(“false”
)或非0(“true”
)的数值 -
“number”
——任何标准的数值 -
“oref”
——对另一个缓存对象的引用 -
“object”
——嵌套的对象 -
“array”
——嵌套的数组 -
“string”
——标准的文本字符串 -
“unassigned”
—属性或元素存在,但没有赋值
类引用: %DynamicAbstractObject.%GetTypeOf()
%IsDefined()
测试键指定的项是否在对象中定义。如果项未赋值或不存在,则返回false。
method %IsDefined(key) as %Boolean
参数:
key - 要测试的项的对象键或数组索引。数组索引必须作为标准整数值传递。数组索引从位置0开始。
类引用:%DynamicObject.%IsDefined()
和 %DynamicArray.%IsDefined()
%Pop()
返回数组中最后一个成员的值。然后从数组中删除该值。如果数组已经为空,则该方法返回空字符串“”。
method %Pop() as %CacheString
类引用: %DynamicArray.%Pop()
%Push()
给定一个新值,将其追加到当前数组的末尾,增加数组的长度。值返回一个oref,该oref引用当前修改的数组,允许对%Push()
的调用被链接。
method %Push(value, type) as %DynamicAbstractObject
参数
- value - 要分配给新数组元素的值。
- key - 指示值的数据类型的可选字符串。可使用下列字符串:
-
"null"
JSON null。value参数必须是“”(空字符串)。 -
"boolean"
JSON为false(值参数必须为0)或为true(值参数必须为1)。 -
"false"
JSON false(值参数必须为0) -
"true"
JSON true(值参数必须为1) -
"number"
将值转换为规范数值 - "
string"
将值转换为文本字符串
类引用: %DynamicArray.%Push()
%Remove()
从动态对象或数组中移除指定的元素,并返回被移除元素的值。如果元素的值是一个嵌入的动态对象或数组,那么也会删除所有从属节点。在动态数组中,删除的元素之后的所有元素的下标位置都将减少1。
method %Remove(key) as %DynamicAbstractObject
参数:
key - 要删除的元素的对象键或数组索引。数组索引必须作为标准整数值传递。数组索引从位置0开始。
类引用: %DynamicObject.%Remove()
, %DynamicArray.%Remove()
%Set()
创建新值或更新现有值。返回对修改后的数组的引用,允许嵌套对%Set()
的调用。
method %Set(key, value, type) as %DynamicAbstractObject
参数
- key 要创建或更新的值的对象键或数组索引。数组索引必须作为标准整数值传递。数组索引从位置0开始。
- value 用于更新以前的值或创建新值的新值。
- type 指示值的数据类型的可选字符串。可使用下列字符串:
-
"null"
JSON null。value参数必须是“”(空字符串)。 -
"boolean"
JSON为false(值参数必须为0)或为true(值参数必须为1)。 -
"false"
JSON false(值参数必须为0) -
"true"
JSON true(值参数必须为1) -
"number"
将值转换为规范数值 -
"string"
将值转换为文本字符串
类引用: %DynamicObject.%Set()
, %DynamicArray.%Set()
%Size()
返回显示动态对象或数组大小的整数。对于数组,大小包括数组中未分配的项。对于对象,大小只包含已赋值的元素。
method %Size() as %Integer
类引用: %DynamicAbstractObject.%Size()
%ToJSON()
转换%DynamicAbstractObject
的实例。转换成JSON字符串。
method %ToJSON(outstrm As %Stream.Object) as %String
参数
- outstrm 以下几种可选择的值
- 如果未指定outstrm并通过
DO
调用该方法,则将JSON字符串写入当前输出设备。 - 如果未指定outstrm,且方法作为表达式调用,则JSON字符串将成为表达式的值。
- 如果outstrm被指定为
%Stream.Object
的实例。对象,JSON字符串将被写入流中。 - 如果outstrm是对象,但不是
%Stream.Object
的实例。对象,则会引发异常。 - 如果outstrm不是一个对象,并且不是null,那么它将被假定为一个完全限定的文件规范(必须定义文件的完整路径)。该文件被链接到一个新创建的
%Stream.FileCharacter
流,JSON字符串被写入该流,该流在完成时被保存到文件中。
类引用: %DynamicAbstractObject.%ToJSON()