JMeter JSON Extractor按条件获取值

时间:2017-11-15 12:22:51

标签: json regex jmeter extract

我得到一个async encodeName(x) { // no Promise constructor here! const cipher = crypto.createCipher('aes192', this.PASSWORD); let encrypted = cipher.update(x, 'utf8', 'hex'); encrypted += cipher.final('hex'); if (encrypted.length > 240) { let x = await this.storeFileName(encrypted); return `@Fn ${x}`); } return encrypted; } storeFileName(x) { // no unnecessary async here return new Promise((resolve, reject) => { let doc = { encName: x }; filesDb = new db(`${this.mntpnt}/__CORE_rigel.pro/x100.db`); filesDb.insert(doc, (err, newdoc) => { err ? reject(err) : resolve(newdoc._id); }); }); } 字符串,如下所示:

JSON

我想获取[{"id":123,"name":"XX","default":false,"type":"other"},{"id":789,"name":"ZZ","default":false,"type":"first"}] ,其中名称为id,因此提取的值应为ZZ。 我试过这个JSON表达式:

789

我也尝试使用正则表达式:

$.id[?(@.name=='ZZ')]

我的正则表达式解决方案不起作用,因为{"id":(.+?),"name":"ZZ","default":falsename有类似的ZZ值。

2 个答案:

答案 0 :(得分:1)

你很接近,使用JSON提取器你需要找到ZZ,然后获取对象返回的id,使用下面的表达式:

[?(@.name == 'ZZ')].id

答案 1 :(得分:0)

在jmeter 4.0版本中可以使用$ .. token_id,但是在jmeter 2.x版本中我们需要使用$ .token_id,即$之后应该只有一个点(。),我现在面对这个问题它的工作。