主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

JSON 中的 MATLAB 函数签名

为了让 RESTful 客户端使用发现 API 获取部署到 MATLAB® Production Server™ 的 MATLAB 函数的函数签名,您必须在打包可部署存档时将有关 MATLAB 函数的信息嵌入 JSON 文件中。

将要部署到 Production Server Compiler 的 MATLAB 函数添加后,在 Include MATLAB function signature file 部分中选择 Create File 按钮。此操作将创建一个名为“<projectName>functionSignatures.json”的 JSON 文件模板。

<projectName>functionSignatures.json 文件是一个 JSON 对象。它包含一个架构版本和一个函数对象列表。每个函数对象包含一个签名对象列表,每个签名对象包含一个参量对象列表。

如果您的 MATLAB 函数具有 structcell 数据类型作为输入或输出,则可以使用 typedef 对象将它们的描述添加到 JSON 文件中。

JSON 文件不支持添加 datetimeenumeration 值的描述,尽管您的 MATLAB 函数可以将这些数据类型作为输入或输出。

您可以使用 发现服务 从服务器访问 JSON 对象文件。

警告

validateFunctionSignaturesJSON (MATLAB) 函数不支持验证 MATLAB Production Server <projectName>functionSignatures.json

Example of a function signature JSON file

架构版本的值是 <major#>.<minor#>.<patch#> 格式的 JSON 字符串,其中每个数字必须是非负整数。

函数对象

函数对象会自动从您添加到工程中的 MATLAB 函数名称继承其名称。函数对象的目的行继承自 MATLAB 函数中提供的函数描述。每个函数对象的值都是一个签名对象。

{
  "functionName1": { signatureObj1 },
  "functionName2": { signatureObj2 }
}

签名对象

签名对象定义了函数的输入和输出参量列表以及支持的平台。属性的值是参量对象的数组。

{
  "functionName1":
  {
     "inputs": [ argumentObj1, argumentObj2 ]
  }
}
每个签名可以包含以下属性。

属性描述JSON 数据类型值

inputs

函数输入参量列表

参数参量数组

outputs

函数输出参量列表

参数参量数组

参量对象

参量对象定义每个输入和输出参量的信息。

{
  "functionName1":
  {
     "inputs":
     [
        {"name":"in1",  "type":["double"], "purpose":"<input 1 description>"},
        {"name":"in2",  "type":["logical"], "purpose":"<input 2 description>"}
     ]
  }
}
输入在 JSON 文件中出现的顺序非常重要。例如,在调用 functionName1 函数时,in1 必须出现在 in2 之前。

每个参量对象可以包含以下属性。

 name — 参量名称

 type — 参量的数据类型

 size — 数组维度

 purpose — 参量描述

Typedef 对象

Typedef 对象定义元胞数组和结构体。仅当参量对象的值是元胞或结构体时才添加 typedef 对象。Production Server Compiler 生成的 JSON 文件模板默认没有此对象。

在架构中,使用名称 _typedefs 及其值作为一个或多个单元或结构体对象的名称来指示 typedef 对象。类型与参量对象相同。

使用同构元胞数组的示例:如果 MATLAB 函数 sortinput 接受一个元胞数组作为输入并返回一个元胞数组作为输出,并且输入中的每个元胞都由一个结构体组成,则其 JSON 表示如下。

{
    "_schemaVersion": "1.1.0",
    "_typedefs" : {
        "struct_names_scores_of_students": {
            "purpose": "Names and scores of students",
            "type": "struct",
            "fields": [
                {"name": "Name",  "type": "char"},
                {"name": "Score", "type": ["double","size=1,1"]}
            ]
        },
        "cell_student_information": {
            "purpose": "Cell representing student information",
            "type": "cell",
            "elements": {
                "type": "struct:struct_names_scores_of_students"
            }
        }
    },
    "sortinput": {
        "inputs": [
            {
                "name": "unsorted_input",
                "type": ["cell:cell_student_information"],
                "purpose": "Unsorted list of students and their scores"
            }
        ],
        "outputs": [
            {
                "name": "sorted_output",
                "type": ["cell:cell_student_information"],
                "purpose": "Sorted list of students with respect to their scores"
            }
        ]
    }
}

使用异构元胞数组的示例:如果 MATLAB 函数 organize 接受一个长度为 3 的包含字符的元胞数组、一个方阵和一个字符串作为输入,并返回一个双精度向量作为输出,则其 JSON 表示如下。

{
       "_typedefs": {
           "cell_het_mydata": {
               "purpose": "cell containing character, matrix, and string",
               "type" : "cell",
               "elements" : [
                   { "type": ["char", "size=1,1"], "purpose": "cell element 1 is a character" },
                   { "type": ["double", "size=N,N"], "purpose": "cell element 2 is a square matrix" },
                   { "type": "char", "purpose": "cell element 3 is a string" }
           ]
       },
       "organize": {
           "inputs": [
               {
                   "name": "data",
                   "type": ["cell:cell_het_mydata","size=3,1"],
                   "purpose": "heterogenous cell array"
               }
           ],
           "outputs": [
               {
                   "name": "numerator",
                   "type": "double",
                   "purpose": "result of function"
               }
           ]
       }
   }

另请参阅

主题