2017-04-24 90 views
-2

例如,我有一些REST API測試任務。 我把Unirest框架,什麼我有一些JSON提取,什麼JSON解析是最簡單的?

protected int extractStatus (HttpResponse<JsonNode> login) { 
    return login.getStatus(); 
} 

protected String extractError (HttpResponse<JsonNode> login) { 
    return login.getBody().getObject() 
      .getJSONObject("data") 
      .getJSONObject("error") 
      .toString(); 
} 

protected String extractEmail (HttpResponse<JsonNode> login) { 
    return login.getBody().getObject() 
      .getJSONObject("data") 
      .getJSONObject("result") 
      .getJSONObject("userProfile") 
      .getString("registrationEmail"); 
} 

對於我簡單的測試:

public class LoginJSON extends Request { 

@Test 
public void validLoginTest() { 
    response = login("[email protected]", "9876541"); 
    Assert.assertEquals(200, extractStatus(response)); 
    Assert.assertNotNull("ID expected", extractId(response)); 
    Assert.assertNotNull("Token expected", extractToken(response)); 
    Assert.assertEquals("[email protected]", extractEmail(response)); 
    Assert.assertEquals("M", extractGender(response)); 
    Assert.assertEquals("EmailEnabled", true, extractEmailEnabled(response)); 
    Assert.assertEquals("EmailDisabled",false, extractEmailDisabled(response)); 
    Assert.assertEquals(2, extractRolesCount(response)); 
    Assert.assertTrue("User role expected", extractRoleByName(response, "ROLE_USER")); 
    Assert.assertTrue("Admin role expected", extractRoleByName(response, "ROLE_ADMIN")); 
} 

也許有simpliest方式更?

+0

您可以使用帶有JSON轉換器的Retrofit –

回答

1

嘗試GsonRetrofit

HttpResponse<JsonNode> jsonResponse = request.asJson(); 
Gson gson = new Gson(); 
String responseJSONString = jsonResponse.getBody().toString(); 
MyResponseObject myObject = gson.fromJson(responseJSONString, MyResponseObject.class); 

class MyResponseObject { 
    @Serializable("data") 
    private MyDataObject myData; 
    #get set methods 
} 

class MyDataObject { 
    @Serializable("result") 
    private MyResultObject myResultObject; 
    #get set methods 
} 

class MyResultObject { 
    @Serializable("userProfile") 
    private UserProfileDao userProfileDao; 
    #get set methods 
} 

class UserProfileDao { 
    @Serializable("registerationEmail") 
    private String registerationEmail; 

    #get set methods 
} 

你可以成功解析或未能解析做了嘗試捕捉。

+0

但這是分類。 – Boris

+0

怪類設計.. –

相關問題