JMeter JSON解析

时间:2016-08-30 23:27:27

标签: json jmeter

当响应数据以无关字符开头时,需要帮助解析JSON。

我可以使用JSON提取查询 - $.results

从示例中提取数据
**Working example:** 
{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "2300",
               "short_name" : "2300",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "22201",
               "short_name" : "22201",
               "types" : [ "postal_code" ]
            }
         ]
      }
   ],
   "status" : "OK"
}

但是,我无法找到任何合适的方法从以下JSON对象中提取数据:

/**/_xdc_._9l6mlb && _xdc_._9l6mlb( {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "2300",
               "short_name" : "2300",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "22201",
               "short_name" : "22201",
               "types" : [ "postal_code" ]
            }
         ]
      }
   ],
   "status" : "OK"
}
)

尝试使用通配符来转义JSON对象之前的前导字符 - *$.results - 但没有运气

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

/**/_xdc_._9l6mlb && _xdc_._9l6mlb(位使您的JSON有点无效。我建议使用JSR223 PostProcessorGroovy语言代替:

import groovy.json.JsonBuilder
import groovy.json.JsonSlurper

def response = prev.getResponseDataAsString()

def cleanResponse = response.substring(response.indexOf("{"), response.lastIndexOf(")"))
def jsonSlurper = new JsonSlurper()
def json = jsonSlurper.parseText(cleanResponse)
def results = json.results

def builder = new JsonBuilder(results)

vars.put("results", builder.toPrettyString())

上面的代码与JSON Path PostProcessor完全相同,并将值存储到${results} JMeter变量

参考文献: