2014-01-16 1 views
28

安心です。要求jsonから価値を引き出すことは可能ですか?私は応答をこのように取得してい

Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json") 
.when().post("/admin"); 
String responseBody = response.getBody().asString(); 

私はresponseBodyでJSONを持っている:

{"user_id":39} 

は、私がこれだけ値= 39、残り-安心のメソッドを使用して文字列に抽出してもらえますか?

+0

JavaでJSONを解析する方法についての情報を探してみてください。JSON(あなたの場合)をマップに変換してください。残念ながら、20種類の方法がありますが、そのほとんどは複雑すぎますが、Javaの達人はそういう風に思っています。 –

+0

ありがとう、@ホットリックス、私はこの決定を知っていた、私は安心して答えを探していた。それはできないように見えます。 – Jay

答えて

14

私は答え:)

使用JsonPathまたはXmlPath(場合には、あなたがXMLを持っている)は、応答本体からデータを取得することが判明。私の場合は

JsonPath jsonPath = new JsonPath(responseBody); 
int user_id = jsonPath.getInt("user_id"); 
+0

確かに、公式ドキュメント:https://code.google.com/p/rest-assured/wiki/Usage#JSON_(using_JsonPath_) – emgsilva

+2

これは単純なバニラJSONアクセスです。 JSONキットが何をするか。 –

35

あなたが「user_idの」抽出する際にのみ興味があるならあなたはまた、次のように行うことができます:それはこのようになります最も単純な形式で

String userId = 
given(). 
     contentType("application/json"). 
     body(requestBody). 
when(). 
     post("/admin"). 
then(). 
     statusCode(200). 
extract(). 
     path("user_id"); 

を:

String userId = get("/person").path("person.userId"); 
7

ターゲットクラス

を定義し、クラスに応答をシリアル化
public class Result { 
    public Long user_id; 
} 

そして、それにマップ応答:

Response response = given().body(requestBody).when().post("/admin"); 
Result result = response.as(Result.class); 

あなたは、ドキュメントの状態としてクラスパスにジャクソンやGsonを持っている必要がありますいくつかの方法がhttp://rest-assured.googlecode.com/svn/tags/2.3.1/apidocs/com/jayway/restassured/response/ResponseBodyExtractionOptions.html#as(java.lang.Class)

9

があります。権利を取得するためにJsonPathを使用して

Response response = 
given(). 
when(). 
then(). 
extract(). 
     response(); 

String userId = response.path("user_id"); 

エキス1:あなたはより多くのものよりを必要とする全体の応答と

String user_Id = 
given(). 
when(). 
then(). 
extract(). 
     path("user_id"); 

仕事:単一の値を抽出

:私は個人的には以下のものを使用しますタイプ:

long userId = 
given(). 
when(). 
then(). 
extract(). 
     jsonPath().getLong("user_id"); 

最後に一致するのは本当に便利ですe値およびタイプ、すなわち

assertThat(
    when(). 
    then(). 
    extract(). 
      jsonPath().getLong("user_id"), equalTo(USER_ID) 
); 

安心して提供されているドキュメントは完全に説明的で完全です。 https://github.com/jayway/rest-assured/wiki/Usage

関連する問題