映射 JSON

映射 JSONPath 文件中的数据并将其存储在变量中,如果执行成功,会返回一个布尔值。

命令可用性: 本地 IBM RPA SaaS 和 IBM RPA

描述

您可以使用此命令将业务模型的数据类型映射到 JSON 中。 此外,还可以根据 JSONPath 选择 JSON 的不同部分。

JavaScript 对象表示法 (JSON) 是用于以文本格式存储和传输信息的模板。

脚本语法

IBM RPA 的专有脚本语言的语法与其他编程语言类似。 该脚本语法在脚本文件中定义命令的语法。 您可以在 IBM RPA Studio的 脚本 方式下使用此语法。

mapJson [--handleError(Boolean)] --json(String) --mappings(String) (Boolean)=value

输入参数

下表显示了此命令中提供的输入参数的列表。 在表中,您可以看到在 IBM RPA Studio的脚本方式及其 Designer 方式等效标签中工作时的参数名称。

设计器方式标签 脚本方式名称 必需的 接受的变量类型 描述
处理错误 handleError Optional Boolean 脚本在执行过程中出错也不停止的选项。
JSON json Required Text 要映射的 JSON 文件。
映射 mappings Required Text 要映射的字段(参数)的名称以及应接收搜索该字段时所找到值的变量。
有关更多选项,请参阅 mappings 参数选项

mappings 参数选项

下表显示了可用于 mappings 输入参数的选项。 该表显示了在脚本方式下工作时的可用选项以及在设计器方式下的等效标签。

设计器方式标签 脚本方式名称 描述
参数 mappings 请输入与要映射的参数对应的参数名称或 JSONPath。
mappings 输入要接收该值的变量。

输出参数

设计器方式标签 脚本方式名称 接受的变量类型 描述
成功 Boolean 如果命令运行成功,那么返回"True",否则返回"False"。

示例

使用命令映射 JSON 文本数据,返回名称、状态和城市。

defVar --name success --type Boolean
defVar --name name --type String
defVar --name status --type String
defVar --name city --type String
mapJson --json "{\"name\":\"Ana\", \"status\": \"Approved\", \"city\": \"New York\"}" --mappings "name=${name},status=${status},city=${city}" success=value
logMessage --message "Success: ${success};\r\nName: ${name};\r\nStatus:${status};\r\nCity: ${city}." --type "Info"
// Executing the command returns:
// Success: True; 
// Name: Ana; 
// Status: Approved; 
// City: New York.

示例 2

该命令映射 JSON 文本数据,并使用特定 JSONPath 返回第一个电话号码类型。

defVar --name phonenumberType --type String
mapJson --json "{\n  \"firstName\": \"John\",\n  \"lastName\" : \"doe\",\n  \"age\"      : 26,\n  \"address\"  : {\n    \"streetAddress\": \"naist street\",\n    \"city\"         : \"Nara\",\n    \"postalCode\"   : \"630-0192\"\n  },\n  \"phoneNumbers\": [\n    {\n      \"type\"  : \"iPhone\",\n      \"number\": \"0123-4567-8888\"\n    },\n    {\n      \"type\"  : \"home\",\n      \"number\": \"0123-4567-8910\"\n    }\n  ]\n}" --mappings "$.phoneNumbers[:1].type=${phonenumberType}"
logMessage --message "Phone number type: ${phonenumberType}" --type "Info"
// Executing the command returns:
// Phone number type: iPhone;

限制

带有多个令牌的 JSONPath

此命令不接受返回多个令牌的 JSONPath。

数组作为输入

例如,Map to JSON(mapJson) 命令不支持将 JSON 数组作为输入:

[{"one":"two"},{"three":3}] 

作为一种变通方法,您可以将数组添加到父 JSON 对象中:

{"array":[{"one":"two"},{"three":3}]}