2016-08-30 5 views
0

응답 데이터가 관련없는 문자로 시작될 때 JSON 구문 분석에 도움이 필요합니다.JMeter 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

**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 추출 쿼리를 사용하여 예로부터 데이터를 추출 할 수 있어요

- *$.results - 행운을 제외하고 JSON 객체 앞에 와일드 카드를 사용하여 이스케이프 처리를 시도했습니다.

어떤 도움을 많이 주시면 감사하겠습니다.

+0

에는 2 개의 포스트 프로세서가 있습니다. 하나는 "가비지"를 제거하고, 두 번째는 정리 된 데이터에서 json을 추출합니다. –

답변

0

/**/_xdc_._9l6mlb && _xdc_._9l6mlb( 비트는 JSON을 약간 무효로 만듭니다. 위의 코드는 JSON 경로 포스트 프로세서 절대적으로 동일 할 및 ${results} JMeter를 변수

참조로 값을 저장합니다

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()) 

:

+0

감사합니다. Dmitri. 또한이 문제를 해결할 다른 방법을 발견했습니다. '정규 표현식 추출기'를 사용하여 관계없는 문자를 제거하고 JSON을 변수에 저장합니다. Dummy sampler를 사용하여이 변수를 출력으로 덤프 한 다음 결과 JSON을 구문 분석합니다. – RayLogan