JSON 中的 MATLAB 函数签名
为了让 RESTful 客户端使用发现 API 获取部署到 MATLAB® Production Server™ 的 MATLAB 函数的函数签名,您必须在打包可部署存档时将有关 MATLAB 函数的信息嵌入 JSON 文件中。
将要部署到 Production Server Compiler 的 MATLAB 函数添加后,在 Include MATLAB function signature file 部分中选择 Create File 按钮。此操作将创建一个名为“
”的 JSON 文件模板。<projectName>
functionSignatures.json
文件是一个 JSON 对象。它包含一个架构版本和一个函数对象列表。每个函数对象包含一个签名对象列表,每个签名对象包含一个参量对象列表。<projectName>
functionSignatures.json
如果您的 MATLAB 函数具有 struct
或 cell
数据类型作为输入或输出,则可以使用 typedef 对象将它们的描述添加到 JSON 文件中。
JSON 文件不支持添加 datetime
和 enumeration
值的描述,尽管您的 MATLAB 函数可以将这些数据类型作为输入或输出。
您可以使用 发现服务 从服务器访问 JSON 对象文件。
警告
validateFunctionSignaturesJSON
(MATLAB) 函数不支持验证 MATLAB Production Server
。<projectName>
functionSignatures.json
架构版本的值是 <major#>.<minor#>.<patch#>
格式的 JSON 字符串,其中每个数字必须是非负整数。
函数对象
函数对象会自动从您添加到工程中的 MATLAB 函数名称继承其名称。函数对象的目的行继承自 MATLAB 函数中提供的函数描述。每个函数对象的值都是一个签名对象。
{ "functionName1": { signatureObj1 }, "functionName2": { signatureObj2 } }
签名对象
签名对象定义了函数的输入和输出参量列表以及支持的平台。属性的值是参量对象的数组。
{ "functionName1": { "inputs": [ argumentObj1, argumentObj2 ] } }
属性 | 描述 | JSON 数据类型值 |
---|---|---|
| 函数输入参量列表 | 参数参量数组 |
| 函数输出参量列表 | 参数参量数组 |
参量对象
参量对象定义每个输入和输出参量的信息。
{ "functionName1": { "inputs": [ {"name":"in1", "type":["double"], "purpose":"<input 1 description>"}, {"name":"in2", "type":["logical"], "purpose":"<input 2 description>"} ] } }
functionName1
函数时,in1
必须出现在 in2
之前。每个参量对象可以包含以下属性。
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" } ] } }