2017-05-19 7 views
0

からIDを削除するにはどうすればJSR223アサーションで2 jsonsを比較していると私は、レスポンスJSONから、すべてのレベルからIDを削除して喜んだ:のJMeter - 与えられたJSON

{ 
    "id" : 52906, 
    "name1" : "559812 Company name1", 
    "name2" : "559812 Company name2", 

    "country" : "DE", 
    "interests" : { 
    "id" : 848675, 
    "description" : false 
    }, 
    "emails" : [ { 
    "id" : 904881, 
    "address" : "[email protected]" 
    } ], 
... 

私が使用していますGroovyのコードに従ってください:

def slurper2 = new JsonSlurper(); 
def jsonResponse = slurper2.parseText(prev.getResponseDataAsString()); 
jsonResponse.rows.findAll { it.remove("id") }; 

しかし、それは動作しません - 助言してください。

答えて

2

rowsビットはどこにあるのですか?あなたの応答には "rows"という名前のJSON Arrayが表示されません。

あなたがを削除したい場合は、すべての "idは" あなたは、次のアプローチを使用することができます属性:

def response = prev.getResponseDataAsString() 
def responseWithoutIds = response.replaceAll("\"id\"[ ]*:[^,}\\]]*[,]?", "") 
// do what you need with the modified response, i.e. store it into a JMeter Variable 

vars.put("responseWithoutIds", responseWithoutIds) 

デモ:

JMeter replace json attributes

参考文献:

+0

クラスのJavaDoc: ' 輸入groovy.json.JsonSlurper インポートgroovy.json: – Nelly

+0

私は、次のコードを使用していました。 JsonBuilder JsonSlurperのslurper =新しいJsonSlurper(); def expected = slurper.parseText( "{\ n""name1 \":\ "" + vars.get( "comp")+ "会社名1 \"、\ n " +" NAME2 \ "\ "" + vars.get( "COMP")+" 当社NAME2 \ "\ n" は + "\ "メール\":[{\ n" +」\ "アドレス\":\ "" + vars.get( "COMP")+ "@ gmail.com \" \ n "は +"}]、\ n」 + "} \ n"); ' – Nelly

+0

DEF応答= prev.getResponseDataAsString() DEF実= response.replaceAll( "\" のID \ "[] * [^} \\]] * [、]?"、 ""); DEF expected2 =新しいJsonBuilder(予想).toPrettyString(); log.info(実際+ "= ACTUAL")。 log.info( "EXPECTED =" + expected2); if(expected2!= actual){ SampleResult.setSuccessful(false); } jsonsに表示される唯一の違いは、実際には空白(空白行)(削除されたIDを持つ行)です。したがって、比較結果は失敗します。私は間違って何をしていますか? – Nelly

0
import groovy.json.*; 
def s='''{ 
    "id" : 52906, 
    "name1" : "559812 Company name1", 
    "name2" : "559812 Company name2", 

    "country" : "DE", 
    "interests" : { 
    "id" : 848675, 
    "description" : false 
    }, 
    "emails" : [ { 
    "id" : 904881, 
    "address" : "[email protected]" 
    } ] 
} 
''' 

def removeAttr(node, attr){ 
    if(node instanceof Map){ 
     node.remove(attr) 
     node.each{ k,v-> removeAttr(v, attr) } 
    }else if(node instanceof List){ 
     node.each{ i-> removeAttr(i, attr) } 
    } 
} 

def slurper2 = new JsonSlurper(); 
def jsonResponse = slurper2.parseText(s); 
removeAttr(jsonResponse,"id") 

println JsonOutput.prettyPrint(JsonOutput.toJson(jsonResponse))