【问题标题】:Process a list of map to get a value of a key in the map处理地图列表以获取地图中某个键的值
【发布时间】:2017-09-10 17:57:15
【问题描述】:

我有一个地图列表(从休息请求的 json 输出中解析),比如

[[Mobile:9876543210, Name:ABCD], [Mobile:8765432109, Name:EFGH], [Mobile:7654321098, Name:IJKL], [Mobile:6543210987, Name:MNOP]] 

原来的 JSON 是这样的

{
    "data": [{
            "Name": "ABCD",
            "Mobile": "9876543210"
        },
        {
            "Name": "EFGH",
            "Mobile": "8765432109"
        },
        {
            "Name": "IJKL",
            "Mobile": "7654321098"
        },
        {
            "Name": "MNOP",
            "Mobile": "6543210987"
        }
    ]
}

我想从名字中获取移动值

尝试了一些东西,但没有成功。

在使用 Groovy 的 JMETER JSR223 后处理器中尝试这个。

【问题讨论】:

  • 使用collectEntries 从中构建地图,其中您将姓名作为键,将手机作为值。因此您可以使用该地图在手机上查找名称。如果你只需要这样做一次,你也可以使用findResult。除此之外,请添加您迄今为止尝试过的内容以及您的方法遇到的问题。
  • 未来,请不要说“尝试了一些东西”——命名并描述它们。

标签: json list groovy hashmap jmeter


【解决方案1】:

你应该可以根据Name得到Mobile

当 Name 为 EFGH 时,以下代码从 OP 的数据中获取 Mobile 8765432109。同样,您可以更改 Name 的值以获得正确的 Mibile

//Pass jsonString value to below parseText method
def json = new groovy.json.JsonSlurper().parseText(jsonString)
def result = json.data.find { it.Name == 'EFGH' }.Mobile
println result

你可以快速在线尝试Demo

【讨论】:

    【解决方案2】:

    这是一个示例 Groovy 代码,用于从原始 JSON 响应中获取 Name:Mobile 对(使用 JSR223 PostProcessor 中的代码)

    def json = new groovy.json.JsonSlurper().parse(prev.getResponseData())
    
    json.data.each {entry ->
        entry.each {k, v -> log.info("${k}:${v}")}
    }
    

    演示:

    参考资料:

    【讨论】:

    • 谢谢。当我需要使用列表中的每个值(移动和名称)时,这将是处理 JSON 的好方法。现在我只需要其中一个。
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多