数据格式说明
  DDei的所有设计数据都以文件为单位保存在一个JSON对象中。JSON对象包含了全量的页签、舞台、图层、控件的位置以及属性信息。开发人员可以存储这个JSON到服务端数据库中,从而轻易的实现保存功能;也解析这个JSON,将其转换成自己业务应用想要的格式,使业务应用具备图形化编排和展示的能力,如:Activi/BPM等流程格式。本文档将对JSON格式进行详细说明。
JSON示例
  通过DDeiEditor的files属性能够获取所有打开文件的文件,通过DDeiFile的toJSON方法就能够得到如下JSON。可以结合设计图可以很了解其结构,JSON是从DDeiFile这一层级开始。
 
{
    "id": "1234567890", 
    "name": "新建文件_NEW",
    "desc": "",
    "extData": {},
    "state": 2,
    "publish": "0",
    "lastUpdateTime": 1720510890856,
    "path": "/新建文件_NEW",
    "currentSheetIndex": 0,
    "modelType": "DDeiFile",
    "modelNumber": 6,
    "unicode": "7c2e23e9a3786cd895d4999084ef6262",
    "ddeiVersion": 1237,
    "sheets": [
        {
            "name": "页面-1",
            "desc": "页面-1",
            "stage": {
                "id": "stage_1",
                "layers": [
                    {
                        "id": "layer_11",
                        "name": "图层1",
                        "models": {
                            "end_17": {
                                "id": "end_17",
                                "modelCode": "102090",
                                "modelType": "DDeiPolygon",
                                "cpv": {
                                    "x": 175.48749999999998,
                                    "y": 110.159375,
                                    "z": 1
                                },
                                "hpv": [
                                    {
                                        "x": 175.48749999999998,
                                        "y": 110.159375,
                                        "z": 1
                                    },
                                    {
                                        "x": 201.94583333333333,
                                        "y": 110.159375,
                                        "z": 1
                                    }
                                ],
                                "exPvs": {},
                                "poly": 2,
                                "mirrorX": false,
                                "mirrorY": false,
                                "sptStyle": {},
                                "fill": {
                                    "color": "black"
                                },
                                "bpv": {
                                    "x": 186.07083333333333,
                                    "y": 120.74270833333333,
                                    "z": 1
                                }
                            },
                            "start_19": {
                                "id": "start_19",
                                "modelCode": "102001",
                                "modelType": "DDeiPolygon",
                                "cpv": {
                                    "x": 175.48749999999998,
                                    "y": 65.18020833333334,
                                    "z": 1
                                },
                                "hpv": [
                                    {
                                        "x": 175.48749999999998,
                                        "y": 65.18020833333334,
                                        "z": 1
                                    },
                                    {
                                        "x": 201.94583333333333,
                                        "y": 65.18020833333334,
                                        "z": 1
                                    }
                                ],
                                "exPvs": {},
                                "poly": 2,
                                "mirrorX": false,
                                "mirrorY": false,
                                "sptStyle": {},
                                "bpv": {
                                    "x": 186.07083333333333,
                                    "y": 75.76354166666667,
                                    "z": 1
                                }
                            }
                        },
                        "midList": [
                            "end_17",
                            "start_19"
                        ],
                        "modelType": "DDeiLayer",
                        "baseModelType": "DDeiLayer",
                        "index": 0,
                        "background": null,
                        "display": 1,
                        "lock": false,
                        "print": true,
                        "centerOpPoints": [],
                        "modelCode": "DDeiLayer",
                        "modelChanged": true,
                        "modelNumber": 2
                    },
                    {
                        "id": "layer_default",
                        "name": "图层",
                        "models": {
                            "task_6": {
                                "id": "task_6",
                                "modelCode": "102010",
                                "modelType": "DDeiPolygon",
                                "cpv": {
                                    "x": 92.14375000000001,
                                    "y": 65.70937500000001,
                                    "z": 1
                                },
                                "hpv": [
                                    {
                                        "x": 92.14375000000001,
                                        "y": 65.70937500000001,
                                        "z": 1
                                    },
                                    {
                                        "x": 118.60208333333334,
                                        "y": 65.70937500000001,
                                        "z": 1
                                    }
                                ],
                                "exPvs": {
                                    "_84b25e15bf91626b80631bd0d088255e": {
                                        "x": 92.14375000000001,
                                        "y": 74.96979166666667,
                                        "z": 1,
                                        "rate": 0.5,
                                        "sita": 90,
                                        "index": 0,
                                        "id": "_84b25e15bf91626b80631bd0d088255e"
                                    }
                                },
                                "poly": 2,
                                "mirrorX": false,
                                "mirrorY": false,
                                "sptStyle": {},
                                "text": "A",
                                "bpv": {
                                    "x": 121.24791666666667,
                                    "y": 84.23020833333334,
                                    "z": 1
                                }
                            },
                            "task_8": {
                                "id": "task_8",
                                "modelCode": "102011",
                                "modelType": "DDeiPolygon",
                                "cpv": {
                                    "x": 135.53541666666666,
                                    "y": 124.71145833333333,
                                    "z": 1
                                },
                                "hpv": [
                                    {
                                        "x": 135.53541666666666,
                                        "y": 124.71145833333333,
                                        "z": 1
                                    },
                                    {
                                        "x": 161.99375,
                                        "y": 124.71145833333333,
                                        "z": 1
                                    }
                                ],
                                "exPvs": {
                                    "_b9bcf285ebba6247bf5593eaa3f1fdb7": {
                                        "x": 135.53541666666666,
                                        "y": 115.45104166666667,
                                        "z": 1,
                                        "rate": 0.5,
                                        "sita": -90,
                                        "index": 2,
                                        "id": "_b9bcf285ebba6247bf5593eaa3f1fdb7"
                                    }
                                },
                                "poly": 2,
                                "mirrorX": false,
                                "mirrorY": false,
                                "sptStyle": {},
                                "text": "B",
                                "border": {
                                    "round": 5
                                },
                                "bpv": {
                                    "x": 164.63958333333335,
                                    "y": 143.23229166666667,
                                    "z": 1
                                }
                            },
                            "line_10": {
                                "id": "line_10",
                                "modelCode": "100401",
                                "modelType": "DDeiLine",
                                "hpv": [
                                    {
                                        "x": 92.14375000000001,
                                        "y": 74.96979166666667,
                                        "z": 1
                                    },
                                    {
                                        "x": 118.60208333333334,
                                        "y": 74.96979166666667,
                                        "z": 1
                                    }
                                ],
                                "pvs": [
                                    {
                                        "x": 92.14375000000001,
                                        "y": 74.96979166666667,
                                        "z": 1,
                                        "isVector3": true
                                    },
                                    {
                                        "x": 92.14375000000001,
                                        "y": 95.21041666666667,
                                        "z": 1
                                    },
                                    {
                                        "x": 135.53541666666666,
                                        "y": 95.21041666666667,
                                        "z": 1
                                    },
                                    {
                                        "x": 135.53541666666666,
                                        "y": 115.45104166666667,
                                        "z": 1,
                                        "isVector3": true
                                    }
                                ],
                                "exPvs": {},
                                "mirrorX": false,
                                "mirrorY": false,
                                "sptStyle": {},
                                "type": 2,
                                "linkModels": {
                                    "lsm_10": {
                                        "type": 3,
                                        "dmid": "lsm_10"
                                    }
                                },
                                "freeze": 0
                            },
                            "lsm_10": {
                                "id": "lsm_10",
                                "modelCode": "100200",
                                "modelType": "DDeiPolygon",
                                "cpv": {
                                    "x": 113.83958333333334,
                                    "y": 95.21041666666667,
                                    "z": 1
                                },
                                "hpv": [
                                    {
                                        "x": 113.83958333333334,
                                        "y": 95.21041666666667,
                                        "z": 1
                                    },
                                    {
                                        "x": 140.29791666666665,
                                        "y": 95.21041666666667,
                                        "z": 1
                                    }
                                ],
                                "exPvs": {},
                                "poly": 2,
                                "mirrorX": false,
                                "mirrorY": false,
                                "sptStyle": {},
                                "borderType": 0,
                                "text": "连接",
                                "font": {
                                    "size": 12
                                },
                                "bpv": {
                                    "x": 135.00625,
                                    "y": 101.82499999999999,
                                    "z": 1
                                }
                            }
                        },
                        "midList": [
                            "task_6",
                            "task_8",
                            "line_10",
                            "lsm_10"
                        ],
                        "modelType": "DDeiLayer",
                        "baseModelType": "DDeiLayer",
                        "index": 1,
                        "background": null,
                        "display": 1,
                        "lock": true,
                        "print": true,
                        "centerOpPoints": [],
                        "modelCode": "DDeiLayer",
                        "modelChanged": true,
                        "modelNumber": 4
                    }
                ],
                "layerIndex": 0,
                "idIdx": 20,
                "modelType": "DDeiStage",
                "ratio": 1,
                "width": 2245.0393700787404,
                "height": 1587.4015748031497,
                "wpv": {
                    "x": -658.5196850393702,
                    "y": -488.20078740157487,
                    "z": 0
                },
                "links": [
                    {
                        "smid": "task_6",
                        "dmid": "line_10",
                        "smpath": "exPvs._84b25e15bf91626b80631bd0d088255e",
                        "dmpath": "startPoint"
                    },
                    {
                        "smid": "task_8",
                        "dmid": "line_10",
                        "smpath": "exPvs._b9bcf285ebba6247bf5593eaa3f1fdb7",
                        "dmpath": "endPoint"
                    }
                ],
                "spv": {
                    "x": 561.2598425196851,
                    "y": 396.85039370078744,
                    "z": 1
                },
                "modelCode": "DDeiStage",
                "unit": "mm"
            },
            "active": 1,
            "modelType": "DDeiSheet",
            "unicode": "741d8249192061ceb6228a5ba7df035f"
        }
    ]
}
 
属性说明
第一级DDeiFile
| 属性名 | 说明 | 数据类型 | 默认值 | 备注 | 
|---|---|---|---|---|
| id | id | string | 文件唯一标识 | |
| unicode | 标识码 | string | 唯一标识 | |
| name | 名称 | string | 文件名称 | |
| path | 路径 | string | 文件路径 | |
| desc | 说明 | string | 文件说明 | |
| modelNumber | 模型数量 | number | 文件的所有页签的图形数量总和 | |
| modelType | 模型类型 | string | DDeiFile | 文件的模型类别 | 
| state | 状态 | number | 文件状态 | |
| publish | 发布状态 | number | 0未发布,1已发布 | |
| lastUpdateTime | 最后更新时间 | number | 最后修改文件的时间 | |
| extData | 扩展数据 | object | 用于存储一些业务相关的扩展数据 | |
| ddeiVersion | DDei版本 | number | 当前文件保存时的DDei版本,用于兼容性检查 | |
| currentSheetIndex | 当前页签下标 | number | 0 | 当前哪个页签处于激活状态 | 
| sheets | 页签 | object[] | 文件所包含的页签集合,至少包含1个页签,参考第二级DDeiSheet | 
第二级DDeiSheet
| 属性名 | 说明 | 数据类型 | 默认值 | 备注 | 
|---|---|---|---|---|
| unicode | 标识码 | string | 页签唯一标识 | |
| name | 页签名称 | string | 页签的显示标题名称 | |
| desc | 页签说明 | string | 页签的说明备注 | |
| modelType | 模型类型 | string | DDeiSheet | 页签的模型类型 | 
| active | 激活状态 | number | 0 | 1激活/0未激活 | 
| stage | 舞台 | object | 页签的舞台,一个页签有且只有一个舞台,参考第三级DDeiStage | 
第三级DDeiStage
| 属性名 | 说明 | 数据类型 | 默认值 | 备注 | 
|---|---|---|---|---|
| id | 舞台ID | string | 舞台的唯一标识 | |
| unicode | 唯一编号 | string | 系统生成 | 自动编码 | 
| modelCode | 模型类型 | string | DDeiStage | 舞台的模型类型 | 
| modelType | 模型类型 | string | DDeiStage | 舞台的模型类型 | 
| idIdx | 当前图形的ID种子 | number | ||
| ratio | 缩放比率 | number | 1.0 | |
| width | 画布宽度 | number | ||
| height | 画布高度 | number | ||
| wpv | 视窗开始点 | object | (0,0,0) | |
| spv | 纸张标量开始点 | object | 中心 | |
| mark | 水印 | object | 查看详情 | |
| paper | 纸张 | object | 查看详情 | |
| ruler | 标尺 | object | 查看详情 | |
| grid | 网格线 | object | 查看详情 | |
| unit | 单位 | string | px | px像素/cm厘米/mm毫米/inch英寸/m米,当前舞台用来表示大小和位置的单位 | 
| links | 链接集合 | object[] | 记录了舞台中所有连线和图形的链接信息,可以用此对象来判定两个图形的前后连接关系 | |
| links[n].smid | 源对象ID | string | 一般为图形的ID | |
| links[n].dmid | 目标对象ID | string | 一般为线的ID | |
| links[n].smpath | 源对象属性路径 | string | 一般为线的端点之一 | |
| links[n].dmpath | 目标对象属性路径 | string | 一般为图形的扩展端点 | |
| layerIndex | 当前的图层下标 | number | -1 | |
| layers | 图层集合 | object[] | 舞台的所有图层结合,参考第四级DDeiLayer | 
第四级DDeiLayers
| 属性名 | 说明 | 数据类型 | 默认值 | 备注 | 
|---|---|---|---|---|
| id | 图层ID | string | ||
| unicode | 唯一编号 | string | 系统生成 | 自动编码 | 
| name | 名称 | string | 系统生成 | |
| models | 控件集合 | object<string,object> | key为控件ID,value为控件对象,参考控件和容器 | |
| midList | 控件ID集合 | string[] | 子控件id列表,带排序 | |
| index | 下标 | number | 当前layer所在stage的下标 | |
| display | 是否显示 | number | 1 | 0不显示/1显示 | 
| lock | 锁定 | boolean | false | |
| 打印 | boolean | true | ||
| modelNumber | 模型总数量 | object | 0 | |
| bg | 背景 | object | 查看详情 | |
| modelType | 模型类型 | string | DDeiLayer | 
控件和容器
  到这一级就能够获取到具体控件的属性了,由于图形控件的属性支持自定义,因此只列举公共的属性。在这一层中有一种特殊情况,当出现组合控件或容器控件时,需要继续通过midList和models进行遍历。才能获取更深层次的控件。
| 属性名 | 说明 | 数据类型 | 默认值 | 备注 | 
|---|---|---|---|---|
| id | 图形ID | string | 画布唯一 | |
| unicode | 唯一编号 | string | 系统生成 | 自动编码 | 
| code | 编码 | string | ||
| text | 文本 | string | ||
| poly | 坐标策略 | number | 1 | 1直角坐标/2极坐标 | 
| rotate | 旋转量 | number | 1.0 | 只读 | 
| cpv | 中心点向量 | object | (0,0,0) | 中心点坐标 | 
| hpv | 平行拉伸向量 | objec[] | 用于计算旋转/拉伸量 | |
| pvs | 点向量 | object[] | 构成图形的所有点 | |
| essBounds | 实际大小 | object | 未经旋转、缩放的实际大小 | |
| text | 文本 | string | 显示文本 | |
| sptStyle | 特殊文本样式 | object[] | ||
| zIndex | 图层层次 | number | 影响渲染顺序 | |
| state | 背景 | DDeiEnumControlState | DEFAULT | |
| stage | 所属舞台 | DDeiStage | ||
| layer | 所属图层 | DDeiLayer | ||
| pModel | 所属容器 | DDeiContainer | ||
| modelCode | 模型的编码 | string | 区分modelType相同,但业务含义不同的模型 | |
| modelType | 模型类型 | string | AbstractShape | |
| border | 边框 | object | ||
| border.type | 边框类型 | number | 0无/1实线 | |
| border.color | 边框颜色 | string | ||
| border.opacity | 透明度 | number | 0-1之间 | 1 | 
| border.width | 宽度 | number | >0 | 1 | 
| border.dash | 线段样式 | Array | >0 | |
| border.roung | 圆角 | number | 0-10 | 0 | 
| fill | 填充 | object | ||
| fill.type | 填充类型 | number | 0无/1纯色/2图片 | |
| fill.color | 填充颜色 | string | ||
| fill.image | 填充图片 | string | ||
| fill.opacity | 透明度 | number | 0-1之间 | 1 | 
| font | 字体 | object | ||
| font.family | 字体名称 | string | 系统默认 | |
| font.color | 字体颜色 | string | black | |
| font.size | 字体大小 | string | 14 | |
| textStyle | 文本样式 | object | ||
| textStyle.align | 横向对齐 | number | 1左/2中/3右 | 2 | 
| textStyle.valign | 纵向对齐 | number | 1上/2中/3下 | 2 | 
| textStyle.feed | 自动换行 | number | 1是/0否 | 1 | 
| textStyle.scale | 超范围策略 | number | 0隐藏/1省略/2缩小/3扩展 | 0 | 
| textStyle.lockWidth | 锁定宽度 | number | 0否/1是 | 0 | 
| textStyle.hollow | 镂空 | number | 0否/1是 | 0 | 
| textStyle.bold | 加粗 | number | 0否/1是 | 0 | 
| textStyle.italic | 斜体 | number | 0否/1是 | 0 | 
| textStyle.underline | 下划线 | number | 0否/1是 | 0 | 
| textStyle.deleteline | 删除线 | number | 0否/1是 | 0 | 
| textStyle.bgcolor | 文本背景 | string | ||
| textStyle.hspace | 水平间距 | number | 0-10 | 0.5 | 
| textStyle.vspace | 垂直间距 | number | 0-10 | 0.5 | 
| mirrorX | 水平镜像 | boolean | false | |
| mirrorY | 垂直镜像 | boolean | false | 












![[BJDCTF2020]EzPHP1](https://i-blog.csdnimg.cn/direct/84a0d3acac3442738e86a7bcdec85a55.png)





