Class Reference
IRIS for UNIX 2024.1.2
InterSystems: The power behind what matters   
Documentation  Search
  [USER] >  [%Library] >  [DynamicAbstractObject]
Private  Storage   

abstract dynamic class %Library.DynamicAbstractObject extends %Library.AbstractSet

For information on the API provided by this superclass, see Using Dynamic Entities.

Dynamic Entity base class.

Inventory

Parameters Properties Methods Queries Indices ForeignKeys Triggers
59


Summary

Methods
%ClassIsLatestVersion %ClassName %Clear %DispatchClassMethod
%DispatchGetModified %DispatchGetProperty %DispatchMethod %DispatchSetModified
%DispatchSetMultidimProperty %DispatchSetProperty %Extends %FromJSON
%FromJSONFile %FromOref %Get %GetDocumentCollection
%GetDocumentID %GetDocumentVersion %GetIterator %GetParameter
%GetSerial %GetSwizzleObject %GetTypeOf %IsA
%IsDefined %New %OnClose %OriginalNamespace
%PackageName %Remove %Set %SetDocumentMetadata
%SetModified %SetSerial %Size %ToJSON
_isLabeled add addAll apply
clear contains containsAll get
getDocumentCollection getDocumentId getDocumentVersion iterator
put putAll putAllIfAbsent putIfAbsent
remove removeAll removeIf rename
replace replaceAll size toDao
toJson toString

Subclasses
%Library.DynamicArray %Library.DynamicObject

Methods

• method %Clear() as %Library.DynamicAbstractObject
Remove all the data from the dynamic object, leaving a blank object intact. return $this to allow chaining.
• classmethod %FromJSON(str As %RawString) as %DynamicAbstractObject
Given a JSON source, parse the source and return an object of type %DynamicAbstractObject. If an error occurs during parsing, an exception will be thrown.

str The input can be from a number of sources

(1) A string value containing the source.
(2) A stream object to read the source from.

Returns An object of type %DynamicAbstractObject containing the parsed JSON.

NOTE: RFC 7159 specifies that the default encoding for JSON values uses UTF-8. This implies that for streams not containing 16-bit Unicode it may be necessary to explicitly convert individual character values via a call to $ZCONVERT (e.g. $zcvt(value,"I","UTF8") ) or entire streams by setting the TranslateTable attribute of the stream to "UTF8".

	 
	   set filename = "c:/iscsrc/json/greg4.json"
	   set stream = ##class(%Stream.FileCharacter).%New()
	   set sc = stream.LinkToFile(filename)
	   if ('sc) { w "Error on linking file "_filename,!   q }
	   try {
	       set obj = ##class(%DynamicAbstractObject).%FromJSON(stream)
	   } catch ex {
	       w "Error. Unable to parse file "_filename,!
	       w "Error type   "_ex.Name,!
	       w "Error code   "_ex.Code,!
	       w "Error location "_ex.Location,!
	       set obj = ""
	   }
	   q obj

	   set src = "{""name"" : ""greg"", ""weight"" : 220 }"
	   set obj = ##class(%DynamicAbstractObject).%FromJSON(src)
• classmethod %FromJSONFile(filename As %RawString) as %DynamicAbstractObject
Given a filename, parse the contents and return an object of type %DynamicAbstractObject. If an error occurs during parsing, an exception will be thrown.

filename A file URI where the source can be read. The file must be encoded as UTF-8.

Returns An object of type %DynamicAbstractObject containing the parsed JSON.

• classmethod %FromOref(source As %Library.AbstractSet) as %DynamicAbstractObject
%FromOref() will return an instance of %DynamicAbstractObject populated from the source object.

request object

NameDescription
source Oref of the object to be cast as a DynamicAbstractObject.
returnValue An oref referencing the DynamicAbstractObject.

set person = ##class(Sample.Person).%OpenId(50)
set object = ##class(%DynamicObject).%FromOref(person)

• abstract method %Get(key As %DataType, default As %Library.Any, type As %String) as %Library.Any
%
• method %GetDocumentCollection() as %RawString
• method %GetDocumentID() as %RawString
• method %GetDocumentVersion() as %Integer
• abstract method %GetIterator() as %Iterator.AbstractIterator

Perform an iteration of all the values in a %DynamicAbstractObject subclass.

In the example below, we will output all values contained in a %DynamicArray or a %DynamicObject.

	   set iter = AbstractObject.%GetIterator()
	   while iter.%GetNext(.key, .value, .type ) {
	      write "key = "_key_", value = "_value_", type = "_type,!
	   }
See the descriptions of the %GetNext in the %Iterator.Array and %Iterator.Object classes for more details.
• method %GetSerial(force As %Integer = 0) as %String
• method %GetSwizzleObject(force As %Integer = 0, ByRef oid As %ObjectIdentity) as %Status
• method %GetTypeOf(key As %DataType) as %String
Find out the type of value.

Returns One of the following strings are returned.
"null" - JSON null
"boolean" - Either "true" or "false"
"number" - Any numeric value
"oref" - An %ObjectHandle (an ObjectScript oref)
"object" - A nested object
"array" - A nested array
"string" - Normal text string
"unassigned" - The value is unassigned

• abstract method %IsDefined(key As %DataType) as %Boolean
• method %OnClose() as %Status
• abstract method %Remove(key As %DataType) as %DynamicAbstractObject
• abstract method %Set(key As %DataType, value As %Library.Any, type As %String) as %DynamicAbstractObject
%
• method %SetDocumentMetadata(documentID As %RawString, documentVersion As %Integer, collectionName As %String(MAXLEN=""), localID As %Integer(MINVALUE=1)="")
• classmethod %SetSerial(val As %String) as %Status
• method %Size() as %Integer
Find the size of an %DynamicArray or a %DynamicObject.

Returns An integer showing the size of the array or object. In the case of an array, the size includes unassigned entries within the array. In the case of an object, the size only includes elements that have assigned values.

• method %ToJSON(outstrm As %Stream.Object) as %String
Convert a %DynamicAbstractObject into a JSON string.

outstrm is optional. There are a number of possibilities:
(1) Parameter outstrm is not defined and the method is called via 'DO'. In this case the JSON string is written to the current output device.
(2) Parameter outstrm is not defined and the method is called as an expression. In this case the JSON string becomes the value of the expression.
(3) Parameter outstrm is defined. If it is %Stream object then the JSON string will be written to the stream. If outstrm is present but not an object then it is presumed to be a fully qualified file specification. In that case, a %Stream.FileCharacter stream is created, linked to that file and the JSON string is written to that stream. On completion, this stream is saved. The full path to the file must be defined. If outstrm is an object but is not an instance of %Stream.Object then an exception will be thrown.

NOTE: RFC 7159 specifies that the default encoding for JSON values uses UTF-8. When writing a stream containing 8-bit characters this implies that it may be necessary to explicitly convert individual values via a call to $ZCONVERT (e.g. $zcvt(value,"O","UTF8") ) or entire streams by setting the TranslateTable attribute of the stream to "UTF8"

	set obj = {"title" : "MR" , "lastname" : "JONES"}
	set obj.firstname = "JIMMY"
	do obj.%ToJSON()
	    {"title":"MR","lastname":"JONES","firstname":"JIMMY"}
	set source = obj.%ToJSON()
	write source
	    {"title":"MR","lastname":"JONES","firstname":"JIMMY"}
• method _isLabeled() as %Boolean
@Override
• method clear()
remove all elements of the current set, throws an exception if this operation is not supported or the set cannot be cleared.
• method contains(key As %DataType) as %Boolean
return true if the key is currently an element of the set, false otherwise.
• method containsAll(array As %Library.DynamicArray) as %Boolean
return true if the set contains() all key[n] where 0≤n≤ size(array)
• method get(key As %DataType) as %Library.Any
get the element identified by key
• method getDocumentCollection() as %RawString
• method getDocumentId() as %RawString
• method getDocumentVersion() as %Integer
• method iterator() as %Iterator
return an iterator over the elements of this set
• method put(key As %DataType, value As %Library.Any, type As %Library.String) as %Library.DynamicAbstractObject
put the value into the set with the element name (id) of key. If an element with this key is already present in the set then that element's value is replaced by value

parameters:

  • key: key to put into the set
  • value: value to put into the set
  • type: type of the value, refer to %GetTypeOf for a list of supported types

returns:

  • oref referencing the modified DAO, this may be different from the current oref

throws:

  • exception

• method putAll(key As %Library.DynamicAbstractObject, value As %Library.DynamicArray) as %Library.DynamicAbstractObject

put all {keys[n], values[n]} elements where 0≤n≤ size(keys) into the DAO

parameters:

  • keys: array of keys to put into the DAO
  • values: array of values to put into the DAO

returns:

  • oref referencing the modified DAO

throws:

  • exception

• method putAllIfAbsent(key As %Library.DynamicAbstractObject, value As %Library.DynamicArray) as %Library.DynamicAbstractObject

put all {keys[n], values[n]} elements where 0≤n≤ size(keys) and keys[n] is not already associated with a value in the set.

parameters:

  • keys: array of keys to be put into the set
  • values: array of values to be put into the set

returns:

  • oref referencing the modified set

throws:

  • exception

• method putIfAbsent(key As %DataType, value As %Library.Any) as %Library.AbstractSet

put the {key, value} element into the set. If contains(key) is false or get(key) is null then put(key,value)

parameters:

  • key: key to put into the set
  • value: value to put into the set
returns:
  • oref referencing the modified set

throws:

  • exception

• method remove(key As %DataType) as %Library.Any

remove the element identified by key from the set

parameters:

  • key: key of element to be removed from the set

returns:

  • the removed element or null if that element doesn't exist

throws:

  • exception

• method removeAll(key As %Library.DynamicArray) as %Library.DynamicArray

remove all elements identified by keys[n] where 0≤n≤ size(keys) from the set

parameters:

  • keys: array of keys to be removed from the set

returns:

  • array of removed elements (null element if key doesn't exist)

throws:

  • exception

• abstract method removeIf(expression As %RawString) as %Library.DynamicArray
remove all of the elements matching the expression

parameters:

  • expression: elements matching expression are to be removed

returns:

  • array of removed elements (null element if key doesn't exist)

throws:

  • exception

• method rename(currentkey As %DataType, newkey As %DataType) as %DataType
replace the key of the element identified by currentKey with newKey

parameters:

  • currentkey - current key of the element to be renamed
  • newkey - new key to assign to the element
returns:
  • the current key if the element exists, null otherwise

throws:

  • exception

• method replace(key As %DataType, value As %Library.Any) as %Library.Any
replace the value of the element identified by key with value

parameters:

  • key - key of the element to be replaced
  • value - new value of the element
returns:
  • return the previous value of the element

throws:

  • exception

• method replaceAll(key As %Library.DynamicArray, value As %Library.DynamicArray) as %Library.DynamicArray
replace all {keys[n], values[n]} members, return an array containing the replaced values

parameters:

  • keys: array of keys of the elements to be replaced
  • values: array of values of the elements

returns:

  • array of previous element values

throws:

  • exception

• method size() as %Integer
return the number of elements in the current set
• method toJson(outstrm As %Stream.Object) as %RawString
• method toString() as %String
>

The toString() method returns the contents of a set as a string.



Copyright (c) 2025 by InterSystems Corporation. Cambridge, Massachusetts, U.S.A. All rights reserved. Confidential property of InterSystems Corporation.