Java 什么JSON解析最简单?
例如,我有一些RESTAPI测试任务。 我使用了Unirest框架和一些JSON提取器Java 什么JSON解析最简单?,java,json,rest,automated-tests,unirest,Java,Json,Rest,Automated Tests,Unirest,例如,我有一些RESTAPI测试任务。 我使用了Unirest框架和一些JSON提取器 protected int extractStatus (HttpResponse<JsonNode> login) { return login.getStatus(); } protected String extractError (HttpResponse<JsonNode> login) { return login.getBody().getObject(
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");
}
也许有更简单的方法 试试看
您可以尝试捕获成功的解析或失败的解析。您可以使用改型w/a JSON转换器,但这是classhell。
public class LoginJSON extends Request {
@Test
public void validLoginTest() {
response = login("probe@grr.la", "9876541");
Assert.assertEquals(200, extractStatus(response));
Assert.assertNotNull("ID expected", extractId(response));
Assert.assertNotNull("Token expected", extractToken(response));
Assert.assertEquals("probe@grr.la", 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"));
}
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
}