如何遍历Json对象的内容

时间:2019-02-21 05:02:59

标签: jmeter json-schema-validator

关于Jmeter中的JSR223断言,我只需要验证返回的JSON的内部。

我按照此主题进行了验证。 ​How can I write JSON schema validation for JMeter run in TeamCity

基本上,我的Jmeter采样器返回json,如下所示。在我的架构上,验证应针对项,服务和requestId。不得对“有效载荷”进行验证。

{
   "payload": [
    {
      "items": [
        {
          "code": "487482378",
          "description": "Alpha Co",
          "valid": true
        },
        {
          "code": "92901128365",
          "description": "Beta Co",
          "valid": true
        }
     ],
     "service": "entities",
     "requestId": "d190219"
    }
  ]
}

这是我在js223采样器中的当前代码:

var schemaPath = '/path/entities-schema.json'
var rawSchema = new org.json.JSONObject(new org.json.JSONTokener(org.apache.commons.io.FileUtils.readFileToString(new java.io.File(schemaPath), 'UTF-8')))
var schema = org.everit.json.schema.loader.SchemaLoader.load(rawSchema)
schema.validate(new org.json.JSONObject(prev.getResponseDataAsString()))

1 个答案:

答案 0 :(得分:0)

您可以使用JSR223 PostProcessor删除响应中不需要的部分:

def before = prev.getResponseDataAsString()
log.info('Before: ' + before)
def response = new groovy.json.JsonSlurper().parseText(before)
def after = new groovy.json.JsonBuilder(response.payload.items).toPrettyString()
log.info('After: ' + after)
prev.setResponseData(after, 'UTF-8')

enter image description here

完成后,您可以对新内容使用JSON Schema验证方法,而无需使用不需要的元素。

参考文献: