Java 什么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(

例如,我有一些RESTAPI测试任务。 我使用了Unirest框架和一些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");
}
也许有更简单的方法

试试看


您可以尝试捕获成功的解析或失败的解析。

您可以使用改型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
}