当前位置: 首页 > 面试题库 >

机器人中的Json处理

能远
2023-03-14
问题内容

我有一个Json文件,其中有一个字段需要编辑和保存以供下次使用。

但是我需要编辑的字段如下所示,

我需要分配该字段的值是在运行时随机生成的,我将在一个变量中捕获该变量并将其传递给此json特定键“ dp”,然后保存json。

保存的json将用于REST POST网址。

            {
                "p": "10",
                "v": 100,
                "vt": [
                    {
                        "dp": "Field to be edited"(integer value) , 
                  ]          
            }

问题答案:

最简单的解决方案是编写一个可以为您更改值的python关键字。但是,您可以通过执行以下步骤来使用机器人关键字来解决此问题:

  1. 将JSON字符串转换为字典
  2. 修改字典
  3. 将字典转换回JSON字符串

将JSON字符串转换为字典

Python有一个用于处理JSON数据的模块(json)。您可以使用评估关键字使用该模块的load(加载字符串)方法将JSON字符串转换为python字典。

假设您的JSON数据位于名为的机器人变量中${json_string},则可以将其转换为python字典,如下所示:

${json}=    evaluate    json.loads('''${json_string}''')    json

有了以上内容,${json}现在保存了对包含所有json数据的字典的引用。

修改字典

机械手随附的Collections库中有一个名为set的关键字,该关键字可用于设置dictionary的值。在这种情况下,您需要更改嵌套在vtJSONhtml" target="_blank">对象元素内的字典的值。我们可以使用robot的扩展变量语法引用该嵌套字典。

例如:

set to dictionary    ${json["vt"]}    dp=the new value

有了它, ${json}现在具有新的价值。但是,它仍然是python字典而不是JSON数据,因此还有一个步骤。

将字典转换回JSON

将字典转换回JSON是第一步的反向操作。即,使用json模块的dumps(转储字符串)方法:

${json_string}=    evaluate    json.dumps(${json})    json

这样,${json_string}将包含带有已修改数据的有效JSON字符串。

完整的例子

以下是一个完整的工作示例。在替换新值之前和之后,将打印JSON字符串:

*** Settings ***
Library    Collections

*** Test Cases ***
Example
    ${json_string}=    catenate
    ...  {
    ...    "p": "10",
    ...    "v": 100,
    ...    "vt": {
    ...            "dp": "Field to be edited"
    ...          }
    ...  }

    log to console       \nOriginal JSON:\n${json_string}
    ${json}=             evaluate        json.loads('''${json_string}''')    json
    set to dictionary    ${json["vt"]}    dp=the new value
    ${json_string}=      evaluate        json.dumps(${json})                 json
    log to console       \nNew JSON string:\n${json_string}


 类似资料:
  • 概述 PDF版下载 机器人是企业群的高级扩展功能,所有的Hi企业用户均可在企业群中添加使用机器人功能。 企业可以通过机器人推送消息到群聊,也可以通过机器人接收用户的消息,拥有用户和机器人对话的能力。 机器人类型 自定义机器人:由企业开发实现的机器人,一般用来发送企业通知,也可以利用ai会话技术实现有趣的功能。 企业机器人:目前开放的定时通知、投票、问卷机器人由如流开发,企业管理员在企业管理后台的「

  • 我想让我的电报机器人根据机器人问的最后一个问题来处理用户输入。基本上,这就是流程: 用户调用/authenticate命令 机器人请求电子邮件 用户发送电子邮件 bot会回答一条关于将代码发送到用户电子邮件以进行确认的消息,并要求用户在聊天中键入代码 用户键入代码 机器人验证用户代码,用户通过身份验证并开始接收通知 问题是:我如何知道用户在这个流中回答的是特定的bot问题? 将最后一个bot消息存

  • 这不是重复的:| 我添加了一个用于管理goup的新机器人。通过此信息: 我的机器人是管理员 我的机器人隐私被禁用 “启用”-您的机器人只会接收以“/”符号开头或通过用户名提及机器人的消息。“禁用”-您的机器人将接收人们发送到组的所有消息。当前状态是:禁用成功!新状态是:禁用 bot可以读取除其他bot消息外的所有成员!但可以在回复中看到信息。 我的tg api是:https://github.co

  • 机器人用来接收监控和预算告警消息。 机器人用来接收监控和预算告警消息。目前支持钉钉机器人、飞书机器人、企业机器人以及Webhook。其中Webhook用于将平台上资源的增删改查消息发送给特定的URL。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “系统配置/消息中心/机器人管理” 菜单项,进入机器人管理页面。 新建机器人 该功能用于添加机器人。 在机器人管理页面,单击列表上方 “

  • 使用说明 使用前必须先在群组里面添加机器人,然后将 Webhook 地址 中的 key 取出来,作为示例中 $groupKey 的值。 Webhook 地址示例:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=`ab4f609a-3feb-427c-ae9d-b319ca712d36` 微信文档:https://work.weixin.qq

  • 我正在尝试为我们的FiveM服务器创建一个discord社区bot,用于处理discord角色。我希望bot限制ROLECHANNEL,因此只能发布角色命令。我希望删除其他垃圾,以便频道保持干净。 命令正在工作,角色已经分配,但是机器人也会触发为什么?