如果你在开发者社区待过一段时间,就会发现许多问题以不同形式反复出现:如何将持久化对象转换为 JSON?如何遍历一个结构未知的 JSON 有效载荷? 为什么 Required 对我的 %DynamicArray 属性 没有任何作用 ?为什么我的日期会被返回为 31390 ?
注意到这一点后,我们决定撰写一篇文章,总结所有那些仅凭文档无法解答的问题:实践。
让我们从基础开始
InterSystems IRIS 为无模式数据提供了两个类:%DynamicObject 和 %DynamicArray。它们都继承自 %DynamicAbstractObject,两者的实例均被称为动态实体。 它们与 JSON 映射得非常自然:对象是一组键值对,数组是有序列表。与持久化类或注册类不同,动态对象不保留预定义的有效属性名列表——任何字符串键都是合法的,并且可以在运行时添加或移除成员。
最令人愉悦的部分是字面量语法,对于来自 JavaScript 背景的开发者来说,这看起来会很熟悉:
你也可以逐个字段构建它们。 会返回其修改后的实体,因此可以进行调用链:
Set obj = {}.%Set("a",1).%Set("b",2) // now obj is {"a":1,"b":2}
Do scores.%Push(100) // now scores is [90, 85, 77, 100]
Set last = scores.%Pop() // now scores is [90, 85, 77] and last is 100







