2016-08-30 4 views
0

レスポンスデータが余分な文字で始まる場合にJSONを解析するのに役立つ必要があります。JMeter JSON parse

Iは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" 
} 
) 

- *$.results - ただし運がない場合、ワイルドカードを使用して先頭の文字をエスケープしようとしました。

どんな助けでも大いに感謝されます

+0

には2つのポストプロセッサがあり、1つは "ゴミ"を、2番目はjsonをクリーンデータから抽出します。 –

答えて

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パスポストプロセッサと全く同じことを行うと${results} JMeterの変数

参考に値を格納します:

+0

Dmitriに感謝します。私はこの問題を解決する別の方法も見つけました。「Regular Expression Extractor」を使用して余分な文字を取り除き、JSONを変数に保存します。ダミーサンプラーを使用してこの変数を出力としてダンプし、結果のJSONを解析します – RayLogan