configJson 结构

了解 configJson 的完整结构,包括所有支持的字段类型和配置选项。

顶层结构

configJson 必须是完整的配置对象:

{
  "meta": {},
  "dataSchema": {
    "fields": []
  },
  "functions": {}
}
属性 说明 类型
meta 模板元信息对象 object
dataSchema 字段定义容器 object
functions 模板函数能力声明,用于后台展示和跨设备函数绑定 object

meta 对象

meta 是模板元信息对象,没有强制字段白名单,常见字段如下:

{
  "meta": {
    "name": "示例模板",
    "code": "demo-template",
    "version": "0.1.0"
  }
}
属性 说明 类型 必填
name 模板名称 string
code 模板代码 string
version 模板版本 string

通用字段对象

字段对象用于描述一个可配置项。根字段和 object 子字段需要 key,数组项模板可以省略 key。

{
  "key": "title",
  "type": "string",
  "label": "标题",
  "value": "默认标题"
}
属性 说明 类型 必填
key 字段唯一标识;根字段和 object 子字段必填,数组项模板可省略 string 按位置决定
type 字段类型 string
label 字段展示名 string
value 默认值 unknown
通用规则:
  • 根字段和 object.value 子字段的 key 必须是非空字符串
  • array.value 中的数组项模板可以省略 key
  • 同一层级内 key 不能重复
  • value 不是必填;有 value 时表示默认值

支持的字段类型

当前支持以下类型:

string

普通文本

number

数字

boolean

布尔值

image

图片路径

video

视频路径

file

文件路径

object

对象字段

array

字段数组

string 字段

{
  "key": "title",
  "type": "string",
  "label": "标题",
  "value": "默认标题"
}

number 字段

{
  "key": "count",
  "type": "number",
  "label": "数量",
  "value": 3
}

boolean 字段

{
  "key": "enabled",
  "type": "boolean",
  "label": "是否启用",
  "value": true
}

image 字段

{
  "key": "poster",
  "type": "image",
  "label": "海报",
  "value": "/assets/template/poster-core.svg"
}
注意: image 在 configJson 里只接受字符串路径(相对路径或绝对 URL)。

video 字段

{
  "key": "trailer",
  "type": "video",
  "label": "视频",
  "value": "https://example.com/video.mp4"
}
注意: video 在 configJson 里只接受字符串路径(相对路径或绝对 URL)。

file 字段

{
  "key": "modelFile",
  "type": "file",
  "label": "模型文件",
  "value": "/assets/models/demo.glb",
  "accept": [".glb", ".gltf"]
}
accept 写法: 可填写内置类型 imagevideoaudio,也可以填写带点号的后缀,例如 .glb.pdf

object 字段

object.value 是一组带 key 的子字段,页面中读取为普通对象。

{
  "key": "profile",
  "type": "object",
  "label": "基础信息",
  "value": [
    { "key": "name", "type": "string", "label": "名称", "value": "示例展项" },
    { "key": "level", "type": "number", "label": "等级", "value": 1 }
  ]
}

array 字段

array.value 的第一项是新增数组项时使用的结构模板。数组项模板可以省略 key;当一项包含多个字段时,推荐使用匿名 object。

{
  "key": "models",
  "type": "array",
  "label": "模型列表",
  "operations": ["add", "delete"],
  "value": [
    {
      "type": "object",
      "label": "模型项",
      "value": [
        { "key": "name", "type": "string", "label": "模型名称", "value": "Meteor Shower" },
        { "key": "url", "type": "file", "label": "模型文件", "value": "/assets/models/demo.glb", "accept": [".glb", ".gltf"] }
      ]
    }
  ]
}

operations 属性

说明
add 允许添加新项
delete 允许删除已有项
operations 默认行为:
  • 未填写 operations 时,默认允许 add 和 delete
  • operations: [] 表示不允许任何操作
  • 新增数组项只复用第一项结构,不复制第一项内容
  • 新增值会按类型置空,例如 string/file 为空字符串、number 为 0、boolean 为 false

functions 函数声明

0.2.0 开始,functions 不再只是预留对象,而是模板能力清单。后台会读取这些函数,设备关联后可以按规则触发其他模板或硬件函数。

{
  "functions": {
    "playVideo": {
      "label": "播放视频",
      "description": "按视频 ID 播放指定内容",
      "direction": "inout",
      "params": [
        { "name": "id", "type": "string", "required": true },
        { "name": "seekTo", "type": "number", "defaultValue": 0 }
      ],
      "transport": {
        "qos": "at_most_once",
        "timeoutMs": 3000
      },
      "tags": ["video"]
    }
  }
}
属性 说明
label 后台展示名。
description 函数说明。
direction in 可被外部调用,out 作为触发源,inout 两者都支持。
params 参数定义,类型支持 stringnumberbooleanobjectarrayany
transport 调用超时和 QoS 配置,timeoutMs 支持 100 到 30000。
保留字段: valueMap.__templateSdk 是 SDK 元信息命名空间,业务字段不能使用 __templateSdk 作为 key。