全部產品
Search
文件中心

:ThingModelJson資料說明

更新時間:Jun 30, 2024

調用某些物模型相關API時,請求參數或返回參數中包含參數ThingModelJson,該參數的取值格式為物模型功能定義在物聯網平台系統的儲存結構,與TSL中的資料結構有所不同。ThingModelJson中所有欄位按照key的字元排序。

物模型功能定義的限制說明,請參見產品與裝置中物模型功能定義限制

資料結構

預設模組和自訂模組資料結構不同。

  • 預設模組
    {
      "_ppk":{
           "description":"test",
           "version":"159244410****"
      }
      "events":[],
      "productKey":"al12345****",
      "properties":[],
      "services":[],
      "functionBlocks":[{
          "productKey":"al12345****",
          "functionBlockId":"location0",
          "functionBlockName":"定位模組0"
        }]
    }
    參數類型說明
    productKeyString物模型所屬產品的ProductKey。
    _ppkString物模型版本資訊。包含參數:
    • version:當前物模型版本號碼。僅發布後的正式版物模型才有此參數。
    • description:當前預設模組物模型版本的描述。僅發布後的正式版物模型才有此參數。
    propertiesList物模型中的屬性列表。關於屬性資料結構中包含的參數說明,請參見屬性資料結構規範

    每個屬性資料結構中,可以使用extendConfig來定義物模型擴充描述的配置,請參見extendConfig資料結構規範。當屬性無擴充描述時,無需傳入extendConfig

    servicesList物模型中的服務列表。關於服務資料結構中包含的參數說明,請參見服務資料格式規範

    每個服務資料結構中,可以使用extendConfig來定義物模型擴充描述的配置,請參見extendConfig資料結構規範。當服務無擴充描述時,無需傳入extendConfig

    eventsList物模型中的事件列表。關於事件數目據結構中包含的參數說明,請參見事件數目據格式規範

    每個事件數目據結構中,可以使用extendConfig來定義物模型擴充描述的配置,請參見extendConfig資料結構規範。當事件無擴充描述時,無需傳入extendConfig

    functionBlocksList自訂模組列表。僅當產品下有自訂模組時,才包含該參數。包含參數:
    • productKey:物模型所屬產品的ProductKey。
    • functionBlockId:物模型自訂模組標識符,在產品中具有唯一性。
    • functionBlockName:物模型自訂模組名稱。
  • 自訂模組
    {
      "productKey":"al12345****", 
      "identifier":"location0",
      "name":"定位模組0",
      "properties":[],
      "services":[],
      "events":[],
      "description":""
    }

    自訂模組基本參數說明如下,其他參數說明與預設模組中相同。

    參數類型說明
    identifierString物模型自訂模組標識符,在產品中具有唯一性。

    支援英文大小寫字母、數字和底線(_),不超過30個字元。

    nameString物模型的自訂模組名稱。

    支援中文、英文字母、日文、數字和底線(_),長度限制為4~30個字元,一個中文、一個日文算1個字元。

    descriptionString對模組進行說明或備忘。長度限制為100個字元。

屬性資料結構規範

以下表格展示屬性定義中需包含的參數和說明。

重要 參數stdcustomFlag已到期,對於已使用的API,不影響介面調用,此處不再說明;對於新調用的API,無需傳入已到期參數。
參數類型是否必需說明
productKeyString物模型所屬產品的ProductKey。
createTsLong功能建立的時間戳記,預設長度是13位。可手動傳入也可由系統產生。功能定義會根據該時間由小到大進行排序。
說明 存量物模型建立時間,以該物模型功能上線後第一次編輯為準。
identifierString屬性的標識符。可包含大小寫英文字母、數字、底線(_),長度不超過50個字元。
說明 不能用以下詞彙作為標識符:set、get、post、property、event、time、value。
dataTypeString屬性值的資料類型。

可選值:ARRAYSTRUCTINTFLOATDOUBLETEXTDATEENUMBOOL

不同資料類型,可傳入的參數不同。詳情請參見本文中對應資料類型的資料規範章節。

nameString屬性名稱。可包含中文、大小寫英文字母、數字、短劃線(-)、底線(_)和半形句號(.),且必須以中文、英文字母或數字開頭,長度不超過30個字元,一個中文計為一個字元。
rwFlagString在雲端可以對該屬性進行的操作類型。
  • READ_WRITE:讀寫。
  • READ_ONLY:唯讀。
dataSpecsObject資料類型(dataType)為非列表型(INTFLOATDOUBLETEXTDATEARRAY)的資料規範儲存在dataSpecs中,請參見表格下方樣本。
說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
dataSpecsListList資料類型(dataType)為列表型(ENUMBOOLSTRUCT)的資料規範儲存在dataSpecsList中,請參見表格下方樣本。
說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
requiredBoolean是否是標準品類的必選屬性。
  • true:是
  • false:否
customBoolean是否是自訂功能。
  • true:是
  • false:否
  • dataTypeINTdataSpecs樣本:
    {
      "dataSpecs": {
        "custom": true,
        "dataType": "INT",
        "defaultValue": "30",
        "max": "1440",
        "min": "0",
        "step": "10",
        "unit": "min"
      }
    }
  • dataTypeTEXTdataSpecs樣本:
    {
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "id": 2412127,
        "length": 2048
      }
    }
  • dataTypeARRAYdataSpecs樣本:
    {
      "dataSpecs": {
        "childDataType": "INT",
        "custom": true,
        "dataType": "ARRAY",
        "size": 1
      }
    }
  • dataTypeENUMdataSpecsList樣本:
    {
      "dataSpecsList": [
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "true",
          "name": "開啟",
          "value": 1
        },
        {
          "custom": false,
          "dataType": "ENUM",
          "defaultValue": "false",
          "name": "關閉",
          "value": 0
        }
      ]
    }
  • dataTypeSTRUCTdataSpecsList樣本:
    {
      "childDataType": "TEXT",
      "childName": "卡編號",
      "dataSpecs": {
        "custom": true,
        "dataType": "TEXT",
        "length": 128
      },
      "dataType": "STRUCT",
      "identifier": "CardNo",
      "name": "NVR所擁有的晶片資訊"
    }

服務資料格式規範

以下表格展示服務定義中需包含的參數和說明。

參數類型是否必填說明
productKeyString物模型所屬產品的ProductKey。
createTs
Long
功能建立的時間戳記,預設長度是13位。可手動傳入也可由系統產生。功能定義會根據該時間由小到大進行排序。
說明 存量物模型建立時間,以該物模型功能上線後第一次編輯為準。
identifierString服務的標識符。可包含大小寫英文字母、數字、底線(_),長度不超過50個字元。
說明 不能用以下詞彙作為標識符:set、get、post、property、event、time、value。
serviceNameString服務名稱。可包含中文、大小寫英文字母、數字、短劃線(-)、底線(_)和半形句號(.),且必須以中文、英文字母或數字開頭,長度不超過30個字元,一個中文計為一個字元。
inputParamsList服務的輸入參數。資料結構說明,請參見輸入、輸出參數結構規範
outputParamsList服務的輸出參數。資料結構說明,請參見輸入、輸出參數結構規範
requiredBoolean是否是標準品類的必選服務。
  • true:是
  • false:否
callTypeString服務的調用方式。
  • ASYNC:非同步呼叫
  • SYNC:同步調用
customBoolean是否是自訂功能。
  • true:是
  • false:否

事件數目據格式規範

以下表格展示事件定義中需包含的參數和說明。

參數類型是否必填說明
productKeyString物模型所屬產品的ProductKey。
createTs
Long
功能建立的時間戳記,預設長度是13位。可手動傳入也可由系統產生。功能定義會根據該時間由小到大進行排序。
說明 存量物模型建立時間,以該物模型功能上線後第一次編輯為準。
identifierString事件的標識符。可包含大小寫英文字母、數字、底線(_),長度不超過50個字元。
說明 不能用以下詞彙作為標識符:set、get、post、property、event、time、value。
eventNameString事件名稱。可包含中文、大小寫英文字母、數字、短劃線(-)、底線(_)和半形句號(.),且必須以中文、英文或數字開頭,長度不超過30個字元,一個中文計為一個字元。
eventTypeString事件類型。
  • INFO_EVENT_TYPE:資訊。
  • ALERT_EVENT_TYPE:警示。
  • ERROR_EVENT_TYPE:故障。
outputdataList事件的輸出參數。資料結構說明,請參見輸入、輸出參數結構規範
requiredBoolean是否是標準品類的必選事件。
  • true:是
  • false:否
customBoolean是否是自訂功能。
  • true:是
  • false:否

輸入、輸出參數結構規範

服務或事件中的輸入或輸出參數的資料結構規範如下。

參數類型是否必填說明
dataTypeString參數值的資料類型。

可選值:ARRAYSTRUCTINTFLOATDOUBLETEXTDATEENUMBOOL

各資料類型的資料規範,請參見本文中對應資料類型的資料規範章節。

identifierString參數的標識符。可包含大小寫英文字母、數字、底線(_),長度不超過50個字元。
說明 不能用以下詞彙作為標識符:set、get、post、property、event、time、value。
nameString參數名稱。可包含中文、大小寫英文字母、數字、短劃線(-)、底線(_)和半形句號(.),且必須以中文、英文字母或數字開頭,長度不超過30個字元,一個中文計為一個字元。
directionString表示參數是輸入參數還是輸出參數。
  • PARAM_INPUT:輸入參數。
  • PARAM_OUTPUT:輸出參數。
paraOrderInteger參數的序號。從0開始排序,且不能重複。
dataSpecsObject資料類型(dataType)為非列表型(INTFLOATDOUBLETEXTDATEARRAY)的資料規範儲存在dataSpecs中。
說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
dataSpecsListList資料類型(dataType)為列表型(ENUMBOOLSTRUCT)的資料規範儲存在dataSpecsList中。
說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
customBoolean參數是否隸屬於自訂功能。
  • true:是
  • false:否

INT、FLOAT、DOUBLE類型資料結構規範

當功能或參數的資料類型為INTFLOATDOUBLE時,資料結構中包含的參數如下。

參數類型是否必需說明
dataTypeString取值為INTFLOATDOUBLE
maxString最大值。取值為INTFLOATDOUBLE,必須與dataType設定一致。

取值需轉為對應的STRING類型。例如,dataTypeINT,取值為"max":"200",而不是"max":200

minString最小值。取值為INTFLOATDOUBLE,必須與dataType設定一致。

取值需轉為對應的STRING類型,請參見max說明。

stepString步長,資料每次變化的增量。取值為INTFLOATDOUBLE,必須與dataType設定一致。

取值需轉為對應的STRING類型,請參見max說明。

preciseString精度。當dataType取值為FLOATDOUBLE時,可傳入的參數。
defaultValueString傳入此參數,可存入一個預設值。
unitString單位的符號。
unitNameString單位的名稱。
customBoolean是否是自訂功能。
  • true:是
  • false:否

DATE、TEXT類型資料結構規範

當功能或參數的資料類型為DATETEXT時,資料結構中包含的參數如下。

參數類型是否必需說明
dataTypeString取值為DATETEXT
lengthLong資料長度,取值不能超過2048,單位:位元組。dataType取值為TEXT時,需傳入該參數。
defaultValueString傳入此參數,可存入一個預設值。
customBoolean是否是自訂功能。
  • true:是
  • false:否

ARRAY類型資料規範

當功能或參數的資料類型為ARRAY時,資料結構中包含的參數如下。

重要 ARRAYSTRUCT類型資料相互嵌套時,最多支援遞迴嵌套2層(父和子)。
參數類型是否必需說明
dataTypeString取值為ARRAY
sizeLong數組中的元素個數。
childDataTypeString數組中的元素的資料類型。可選值:STRUCTINTFLOATDOUBLETEXT
dataSpecsObject資料類型(dataType)為非列表型(INTFLOATDOUBLETEXTDATEARRAY)的資料規範儲存在dataSpecs中。
說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
dataSpecsListList資料類型(dataType)為列表型(ENUMBOOLSTRUCT)的資料規範儲存在dataSpecsList中。
說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
customBoolean是否是自訂功能。
  • true:是
  • false:否

枚舉、布爾類型資料規範

當功能或參數的資料類型為BOOLENUM時,資料結構中包含的參數如下。

參數類型是否必需說明
dataTypeString取值為BOOLENUM
nameString枚舉項的名稱,可包含中文、大小寫英文字母、數字、底線(_)和短劃線(-),且必須以中文、英文字母或數字開頭。長度不超過20個字元,一個中文計為一個字元。
valueInteger枚舉值。
customBoolean是否是自訂功能。
  • true:是
  • false:否

STRUCT類型資料結構規範

當功能或參數的資料類型為STRUCT時,資料結構中包含的參數如下。

重要
  • 參數childSpecsDTOchildEnumSpecsDTO已到期,對於已使用的API,不影響介面調用,此處不再說明;對於新調用的API,無需傳入已到期參數,建議使用參數dataSpecsList
  • ARRAYSTRUCT類型資料相互嵌套時,最多支援遞迴嵌套2層(父和子)。
參數類型是否必需說明
dataTypeString取值為STRUCT
identifierString結構體中的子參數的標識符。可包含大小寫英文字母、數字、底線(_),長度不超過50個字元。
說明 不能用以下詞彙作為標識符:set、get、post、property、event、time、value。
nameString結構體中的子參數名稱。可包含中文、大小寫英文字母、數字、短劃線(-)、底線(_)和半形句號(.),且必須以中文、英文字母或數字開頭,長度不超過30個字元,一個中文計為一個字元。
說明 該參數與childName定義相同,目前不使用。
childDataTypeString結構體中子參數的資料類型。

可選值:INTFLOATDOUBLETEXTDATEENUMBOOL

childNameString結構體中的子參數名稱。可包含中文、大小寫英文字母、數字、短劃線(-)、底線(_)和半形句號(.),且必須以中文、英文字母或數字開頭,長度不超過30個字元,一個中文計為一個字元。
dataSpecsObject

資料類型(dataType)為非列表型(INTFLOATDOUBLETEXTDATEARRAY)的資料規範儲存在dataSpecs中。

說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
dataSpecsListList資料類型(dataType)為列表型(ENUMBOOLSTRUCT)的資料規範儲存在dataSpecsList中。
說明
  • 除屬性、服務、事件和參數定義資料以外,其他資料都屬於資料規範。
  • dataSpecsdataSpecsList之中必須傳入且只能傳入一個,請根據實際資料類型傳入。
customBoolean是否是自訂功能。
  • true:是
  • false:否

extendConfig資料結構規範

每個屬性、事件或服務資料結構中,可以使用extendConfig來定義物模型擴充描述的配置。擴充描述為裝置通訊協定到標準物模型的映射關係。

說明 返回資料中的configCode是系統為單個功能定義擴充描述產生的唯一識別碼。

目前系統支援接入網關協議為Modbus、OPC UA或自訂的裝置配置擴充描述。不同類型的擴充描述需要滿足不同的資料規範:

Modbus類型

Modbus只支援屬性類型的物模型擴充描述。

說明 為了完整展示extendConfig的結構,以下樣本中包含所有參數,不代表實際使用中可能出現的組合。各參數的使用情境請參見參數說明。
{
  "identifier":"extend1",
  "writeFunctionCode":0,
  "writeOnly":0,
  "registerAddress":"0xFE",
  "operateType":"coilStatus",
  "scaling":0.1,
  "pollingTime":1000,
  "trigger":1,
  "bitMask":128,
  "originalDataType":{
     "type":"uint64",
     "specs":{
        "swap":0,
        "reverseRegister":0}
  }
}
參數類型說明
identifierString屬性唯一識別碼(產品下唯一)。
registerAddressString寄存器地址,必須以0x開頭,且限制範圍是0x0~0xFFFF,例如0xFE。
operateTypeString操作類型,取值:
  • coilStatus:線圈狀態
  • inputStatus:離散量輸入
  • holdingRegister:保持寄存器
  • inputRegister:輸入寄存器
writeFunctionCodeInteger讀寫操作,對於不同操作類型(operateType),可選的取值不同:
  • coilStatus:
    • 5:讀寫(讀0x01,寫0x05)
    • 15:讀寫(讀0x01,寫0x0F)
    • 0:唯讀0x01
    • 6:唯寫0x05
    • 15:唯寫0x0F
  • inputStatus:0:唯讀0x02
  • holdingRegister:
    • 6:讀寫(讀0x03,寫0x06)
    • 16:讀寫(讀0x03,寫0x10)
    • 0:唯讀0x03
    • 6:唯寫0x06
    • 16:唯寫0x10
  • inputRegister:0:唯讀0x04
writeOnlyInteger是否唯寫。
  • 0:非唯寫。
    • writeFunctionCode取值不為0(表示讀寫)時,writeOnly為0表示支援讀寫。
    • writeFunctionCode取值為0(表示唯讀)時,writeOnly必須為0。
  • 1:唯寫。

    僅當writeFunctionCode取值不為0(表示讀寫)時,writeOnly可以為1,表示僅支援寫。

scalingNumber縮放因子,不能為0。

string、bool無該參數。

pollingTimeInteger採集間隔,單位是ms。無需傳入,將使用裝置配置的採集間隔。
triggerInteger資料上報方式。1代表按時上報,2代表變更上報。
bitMaskIntegerbool特有的參數。

掩碼,取值:1、2、4、8、16、32、64、128、256、512、1024、2048、4096、8192、16384、32768,即1<<(0~15)。

originalDataTypeObject未經處理資料類型描述。
typeString未經處理資料類型,需要為基礎類型:int16、uint16、int32、uint32、int64、uint64、float、double、string、bool、customized data(按大端順序返回hex data)。
specsObject部分資料類型特有的參數。
registerCountIntegerstring、customized data特有的參數。

寄存器的資料個數。

swapInteger除string、customized data外,其他資料類型特有的參數。

是否交換寄存器內高低位元組,把寄存器內16位元據的前後8個bit互換(byte1byte2 -> byte2byte1)。

  • 0:不交換
  • 1:交換
reverseRegisterInteger除string、customized data外,其他資料類型特有的參數。
是否交換寄存器順序,把未經處理資料32位元據的前後16個bit互換(byte1byte2byte3byte4 -> byte3byte4byte1byte2)。
  • 0:不交換
  • 1:交換

OPC UA類型

OPC UA支援屬性、服務、事件類型的物模型擴充描述。

{
  "identifier":"extend2",
  "displayName":"Action",
  "inputData":[
    {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2 
    }
  ],
  "outputData":[
     {
      "identifier":"xxxx",
      "index":1
    },
    {
      "identifier":"xxxx",
      "index":2
    }
  ]
}
參數類型說明
identifierString屬性、服務、事件的唯一識別碼(產品下唯一)。
displayNameString屬性、事件需要傳入displayName,服務不需要傳入。
inputDataList輸入資料。
outputDataList輸出資料。
identifierString輸入資料、輸出資料的唯一識別碼(產品下唯一)。
indexInteger索引。inputData中的index不能重複,outputData中的index不能重複。

自訂類型

自訂類型支援屬性、服務、事件類型的物模型擴充描述。

{
  "identifier":"xxx",
  "customize":{}
}
參數類型說明
identifierString屬性、服務、事件的唯一識別碼(產品下唯一)。
customizeObject自訂JSON。

校正

您可以通過json-schemaThingModelJson中的入參進行預校正。

關於json-schema的定義代碼,請參見schema.json

校正樣本如下:

  • 在Maven工程中添加如下依賴,下載json-schema的版本庫。
    <dependency>
        <groupId>com.github.everit-org.json-schema</groupId>
        <artifactId>org.everit.json.schema</artifactId>
        <version>1.11.0</version>
    </dependency>
  • 範例程式碼:
    package com.aliyun.iot.thingmodel;
    
    import java.io.InputStream;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.Arrays;
    
    import org.everit.json.schema.Schema;
    import org.everit.json.schema.ValidationException;
    import org.everit.json.schema.loader.SchemaLoader;
    import org.json.JSONObject;
    import org.json.JSONTokener;
    
    /**
     * @author: ***
     * @date: 2020-01-14 15:11
     */
    public class ThingModelJsonValidator {
    
        public static void main(String[] args) throws Exception {
    
            try (InputStream inputStream = new URL("https://iotx-thing-model-schema.oss-ap-southeast-1.aliyuncs.com/schema.json").openStream()) {
                JSONObject rawSchema = new JSONObject(new JSONTokener(inputStream));
                Schema schema = SchemaLoader.load(rawSchema);
                long start = System.currentTimeMillis();
                JSONObject object = new JSONObject();
                String jsonStr = "{\n"
                        + "\t\t\t\"productKey\": \"a1Q1Yrc****\",\n"
                        + "\t\t\t\"name\": \"警示事件\",\n"
                        + "\t\t\t\"identifier\": \"alarmEvent\",\n"
                        + "\t\t\t\"eventName\": \"警示事件\",\n"
                        + "\t\t\t\"eventType\": \"ALERT_EVENT_TYPE\",\n"
                        + "\t\t\t\"outputData\": [\n"
                        + "\t\t\t\t{\n"
                        + "\t\t\t\t\t\"paraOrder\": 0,\n"
                        + "\t\t\t\t\t\"direction\": \"PARAM_OUTPUT\",\n"
                        + "\t\t\t\t\t\"dataSpecsList\": [\n"
                        + "\t\t\t\t\t\t{\n"
                        + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\t\t\"name\": \"防拆警示\",\n"
                        + "\t\t\t\t\t\t\t\"value\": 0\n"
                        + "\t\t\t\t\t\t},\n"
                        + "\t\t\t\t\t\t{\n"
                        + "\t\t\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\t\t\"name\": \"防拆警示解除\",\n"
                        + "\t\t\t\t\t\t\t\"value\": 1\n"
                        + "\t\t\t\t\t\t}\n"
                        + "\t\t\t\t\t],\n"
                        + "\t\t\t\t\t\"dataType\": \"ENUM\",\n"
                        + "\t\t\t\t\t\"identifier\": \"alarmType\",\n"
                        + "\t\t\t\t\t\"name\": \"警示類型\",\n"
                        + "\t\t\t\t\t\"index\": 0,\n"
                        + "\t\t\t\t\t\"custom\": true\n"
                        + "\t\t\t\t}\n"
                        + "\t\t\t],\n"
                        + "\t\t\t\"outputParams\": [\n"
                        + "\t\t\t\t{\n"
                        + "\t\t\t\t\t\"index\": 0,\n"
                        + "\t\t\t\t\t\"identifier\": \"alarmType\"\n"
                        + "\t\t\t\t}\n"
                        + "\t\t\t],\n"
                        + "\t\t\t\"custom\": true\n"
                        + "\t\t}";
    
                object.put("properties", new ArrayList<>());
                object.put("services", new ArrayList<>());
                object.put("events", Arrays.asList(com.alibaba.fastjson.JSONObject.parseObject(jsonStr)));
                object.put("productKey", "a1Q1Yrc****");
                schema.validate(object); // throws a ValidationException if this object is invalid
                //}
                System.out.println(System.currentTimeMillis() - start);
            }
            catch (ValidationException exception) {
                System.out.println(exception);
            }
        }
    
    }

如何快速編寫ThingModelJson

下文為您介紹,如何使用Visual Studio Code工具編寫ThingModelJson。

  1. 訪問Visual Studio Code官網 ,下載並安裝新版本Visual Studio Code工具。
  2. 開啟Visual Studio Code,單擊左下角設定按鈕,選擇Settings
  3. user頁簽,選擇Extensions > JSON,單擊SchemasEdit in settings.json,配置如下內容並儲存。
     "json.schemas": [{
            "fileMatch": ["/.json"],
            "url": "https://iotx-tsl.oss-ap-southeast-1.aliyuncs.com/schema.json"
    }]

    配置完成後,編寫TSL時,會自動智能提示,如下圖所示。

    提示