InterSystems IRIS可以很容易以动态对象(Dynamic Object) 方式操作JSON,但动态对象没有 schema,DTL 图形编辑器里没有字段可以拖拽。本文介绍一个把 JSON 报文做成 Virtual Document 的实现(下文称 JVDoc):schema 来自 JSON Schema 或样例 JSON,DTL 编辑器、规则编辑器、搜索表和校验都能直接使用,报文本身仍然原样保存、无损透传。文末给出可以直接运行的测试用例。
问题
在集成项目里处理 JSON 很常见,动态对象(Dynamic Object) 来处理JSON也很好用,但它没有schema,带来三个麻烦:
- DTL 编辑器里没有字段树,无法简单拖拽建立映射,只能手写代码。
- 规则编辑器无法像实体对象那样获得属性列表,也无法像虚拟文档那样输入
Document.{得到字段提示。 - 消息查看器(Message Viewer)没法按报文里的字段搜索。
常见的办法是用 %JSON.Adaptor 生成类。它能解决图形化映射,但有两个代价:每条报文都要先实例化为对象,大报文成本高;schema 里没有的字段在导入时会被丢掉,做不到无损透传。
思路
IRIS的虚拟文档架构(Ens.VDoc.Interface)本来就是为没有对应类的结构化文档设计的:编辑器通过它取得字段树,运行时通过路径读写值。










