机器人中的Json处理

我有一个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的值。在这种情况下,您需要更改嵌套在vtJSON对象元素内的字典的值。我们可以使用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}

以上是 机器人中的Json处理 的全部内容, 来源链接: utcz.com/qa/417243.html

回到顶部