2017-04-24 164 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

怪类设计.. –

相关问题