第五章 Caché JSON 快速参考动态实体方法
方法详细信息

本节列出所有可用的动态实体方法,简要地描述每个方法并提供进一步信息的链接。所有方法都可用于对象和数组,除了%Push()%Pop()之外,%Push()%Pop()只适用于数组

%FromJSON()

给定一个JSON源,解析该源并返回一个数据类型为%DynamicAbstractObject的对象,该对象包含已解析的JSON。如果解析过程中出现错误,将抛出异常。

classmethod %FromJSON(str) as %DynamicAbstractObject

参数

  • str 输入的参数可以来自下列任何一个来源:
  1. 包含源的字符串值。
  2. 要从中读取源的流对象。
  3. 可以读取源代码的文件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 - 指示值的数据类型的可选字符串。可使用下列字符串:
  1. "null" JSON null。value参数必须是“”(空字符串)。
  2. "boolean" JSON为false(值参数必须为0)或为true(值参数必须为1)。
  3. "false" JSON false(值参数必须为0)
  4. "true" JSON true(值参数必须为1)
  5. "number" 将值转换为规范数值
  6. "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 指示值的数据类型的可选字符串。可使用下列字符串:
  1. "null" JSON null。value参数必须是“”(空字符串)。
  2. "boolean" JSON为false(值参数必须为0)或为true(值参数必须为1)。
  3. "false" JSON false(值参数必须为0)
  4. "true" JSON true(值参数必须为1)
  5. "number" 将值转换为规范数值
  6. "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()