jmeter--正则提取json串中一个大括号对象里指定字段值的的另一个字段的值
生活随笔
收集整理的這篇文章主要介紹了
jmeter--正则提取json串中一个大括号对象里指定字段值的的另一个字段的值
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
需要提取如圖紅框_id的值,整個返回里有多個類似的大括號對象: 里面的第一個id的值,但是整個json串不止這么一個,并且只能匹配quality_level是349的這個大括號里的第一個id的值。下面使用3種方法: 第一種:最笨的方法,所有字段都寫出來做匹配 {"_id":"(.{10,30}?)","agent":{"_id":"[^"]*?","name":"[^"]*?"},"category":{"_id":"[^"]*?","name":"[^"]*?"},"create_time":[^"]*?,"duration":[^"]*?,"end_time":[^"]*?,"is_resolved":[^"]*?,"is_inspected":[^"]*?,"inspector":"[^"]*?","inspect_time":[^"]*?,"location":"[^"]*?","quality_level":349 這個正則是把整個從第一個id到quality之間的所有字段都寫出來,每個字段都匹配了。因為每個字段的值里肯定不會帶有雙引號,所以用了排除雙引號的表達式[^"]。這樣就可以保證每個字段只會匹配到他原本的值,不會過多的匹配其他內(nèi)容。這是最笨的辦法 第二種:在第一種的基礎(chǔ)上最變更 \{"_id":"(\w{24})","agent":\{[^{}]+?\},"category":\{[^{}]+?\}[^{}]+?"quality_level":349, 這個正則用了過濾大括號的表達式[^{}],因為我們看到那么多json串都是用大括號分割的,那我只要讓我表達式里面不匹配大括號,即匹配的內(nèi)容里不能有大括號就能把整個范圍定位到了一個大括號里,但是呢,由于agent跟category下又都有大括號,所以我只能把他們2個大括號先做匹配出來,再在他們2個括號里面去匹配不帶大括號的內(nèi)容。 第三種:使用不包含某些指定的單詞語法 {"_id":"(.{10,30}?)","agent"(?:(?!agent).)*,"quality_level":349 這個正則用了不包含某個單次的匹配語法(?!agent). 這個表達式就是去匹配每個字符串之前是否包含了agent,包含就為false,只有不字符前都沒有agent才為true,這樣我就可以對著這個表達式加上星號(*),讓他去匹配每個,"agent"后面的內(nèi)容,只有不含agent的內(nèi)容才能匹配到,這樣就可以保證了我id到quality里面只會有一個agent。就實現(xiàn)了只匹配一個大括號的內(nèi)容了 當(dāng)然類似這種json串的返回值要提取,可以直接使用json解析,會更加的方便
轉(zhuǎn)載于:https://www.cnblogs.com/VashGu927/p/8043456.html
總結(jié)
以上是生活随笔為你收集整理的jmeter--正则提取json串中一个大括号对象里指定字段值的的另一个字段的值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: intent Filter
- 下一篇: Intent实现页面跳转