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"
}
]
}
}