之所以称为Dynamic,是说这个对象在代码编译的时候可以不定义对象的属性和结构,在runtime时才根据装入的数据来产生对象定义。IRIS里用Dynamic Object来处理JSON数据。简单说: 先定义一个Dynamic Object, 把JSON数据装进去,然后用对象的方式处理JSON文档。
让我们看看是它是怎么工作的。
创建一个Dynamic Object很简单, 标准而且啰嗦的写法是:
set dynObject1 = ##class(%DynamicObject).%New()
大家通常用简单的写法,像这样用一个{}来定义Dynamic Object:
DEMO>set dynObject1 = {}
DEMO>zw dynObject1
dynObject1={} ; <DYNAMIC OBJECT>
字符串,流到DynamicObject的导入导出
把JSON数据从字符串或者流导入DynamicObject被称作Deserializing;反之,把DynamicObject里的JSON导出来到String或者Stream叫Serializing。在类%DynmicObject中用的是%FromJSON()和%ToJSON()两个方法,一个是类方法,一个是实例方法:
//从字符串,流里导入数据到%DynmicObject。str可以是字符串,stream, 或