【问题标题】:Robot framework get from JSON list机器人框架从 JSON 列表中获取
【发布时间】:2016-09-24 12:46:19
【问题描述】:

我有这样的数据

{"_embedded":[
  {"attr_name":"attr_value_1"},
  {"attr_name":"attr_name_2"}
 ]
}

我想得到第一个属性attr_value_1

您知道如何在 Robot 框架中执行此操作吗? Get JSON /_embedded[0]/attr_name 之类的东西?

【问题讨论】:

  • 这似乎与 stackoverflow.com/q/35891061/7432 重复。
  • 我不这么认为,他不只是“生成的令牌”,它不是 json 数组中的变量
  • 这个问题和我标记为重复的问题都是关于基于键从一些 json 数据中获取属性。你的有什么不同?如果我要回答这个问题,答案将与其他问题几乎完全相同。
  • 另外,这是实际数据吗?它看起来像非法的 json,因为同一个键出现了两次。如果是非法 json,则解决方案与合法 json 不同。
  • 我认为这是合法的 - 具有 atr_name 属性的对象列表。我也认为这个问题是重复的。问题是如何从字典中对象内的列表中的对象获取属性,尽管问题应该是关于字典的。

标签: robotframework


【解决方案1】:

您可以将 JSON 数据转换为 python 对象,然后使用机器人的extended variable syntax 获取元素。在python中,该值被引用为data["_embedded"][0]["attr_name"],它直接转换为${data["_embedded"][0]["attr_name"]}的机器人扩展变量语法

这是一个完整的例子:

*** Test Cases ***
Example
    ${json}=    catenate    SEPARATOR=\n
    ...  {"_embedded":[
    ...    {"attr_name":"attr_value_1"},
    ...    {"attr_name":"attr_name_2"}
    ...   ]
    ...  }
    ${data}=  evaluate    json.loads('''${json}''')    json
    should be equal as strings    ${data["_embedded"][0]["attr_name"]}    attr_value_1
    should be equal as strings    ${data["_embedded"][1]["attr_name"]}    attr_name_2

【讨论】:

    猜你喜欢
    • 2020-10-29
    • 2017-07-23
    • 2018-05-04
    • 2020-06-28
    • 2020-12-07
    • 1970-01-01
    • 2015-11-21
    • 2021-07-28
    • 2017-05-02
    相关资源
    最近更新 更多