Как обойти ошибки и проанализировать значения полей json

#rest-assured #rest-assured-jsonpath

#будьте уверены #будьте уверены -jsonpath

Вопрос:

Как десериализовать ниже JSON?

Когда я использую приведенный ниже код ответа response=engine.GetResponse(Метод.GET,strURL,strBAUsername,strBAPassword,null,ContentType.JSON); userEdit=response.as (TestUserRoleInfoList.class ); // TestUserRoleInfoList — это класс POJO

@JsonIgnoreProperties(ignoreUnknown=true) открытый класс TestUserRoleInfoList {

 @JsonProperty("userRoleInfoList")
List<UserRoleInfo> userRoleInfo=new ArrayList<UserRoleInfo>();

public List<UserRoleInfo> getUserRoleInfo() {
    return userRoleInfo;
}

public void setUserRoleInfo(List<UserRoleInfo> userRoleInfo) {
    this.userRoleInfo = userRoleInfo;
}
  

}

Каким-то образом он не может проанализировать внутренний класс Regions. Но меня это меньше всего беспокоит. Мне нужны поля collectionrolle.

Как я могу получить список ролей коллекции?

 {
    "id": 5595,
    "userName": "abc",
    "firstName": "abc",
    "lastName": "ijk",
    "additionalName": "Ernest",
    "namePrefix": {
        "id": null,
        "prefix": null,
        "createdAt": null,
        "updatedAt": null
    },
    "nameSuffix": {
        "id": null,
        "suffix": null,
        "createdAt": null,
        "updatedAt": null
    },
    "emplId": "11111",
    "workDayId": "11111",
    "staffEmailAddress": null,
    "facultyEmailAddress": "abc.xyz@xxxx.edu",
    "userRoleInfoList": [
        {
            "userId": 5595,
            "collectionRole": "program-chair",
            "regions": [
                {
                    "id": 1,
                    "region": "Germany 1",
                    "regionalDirectorFirstName": "aaaa",
                    "regionalDirectorLastName": "bbbb",
                    "associateDirectorFirstName": null,
                    "associateDirectorLastName": null,
                    "division": {
                        "id": 2,
                        "name": "Europe",
                        "deletedFlag": false,
                        "createdAt": null,
                        "updatedAt": null
                    },
                    "deletedFlag": false,
                    "createdAt": null,
                    "updatedAt": null
                }
            ],
            "school": {
                "id": 3,
                "name": "Arts and Sciences",
                "dean": null,
                "createdAt": null,
                "updatedAt": null
            },
            "facultyPhoto": null,
            "primary": false
        },
        {
            "userId": 5595,
            "collectionRole": "faculty",
            "regions": [
                {
                    "id": 3,
                    "region": "Germany 1",
                    "regionalDirectorFirstName": "aaaa",
                    "regionalDirectorLastName": "bbbb",
                    "associateDirectorFirstName": null,
                    "associateDirectorLastName": null,
                    "division": {
                        "id": 2,
                        "name": "Europe",
                        "deletedFlag": false,
                        "createdAt": null,
                        "updatedAt": null
                    },
                    "deletedFlag": false,
                    "createdAt": null,
                    "updatedAt": null
                }
            ],
            "school": {
                "id": 3,
                "name": "Arts and Sciences",
                "dean": null,
                "createdAt": null,
                "updatedAt": null
            },
            "facultyPhoto": null,
            "primary": true
        }
    ]
}
  

Комментарии:

1. Кто-нибудь может мне здесь помочь?

Ответ №1:

Вы можете использовать org.json.JSONObject

     Response response = when()
            .get("api_url")
            .then()
            .extract().response();

    JSONObject jsonObject = new JSONObject(response.getBody().asString());
    JSONArray jsonArray = jsonObject.getJSONArray("userRoleInfoList");
    List<String> stringList = new ArrayList<>();

    for (int i = 0; i < jsonArray.length(); i  ) {
        stringList.add(jsonArray.getJSONObject(i).getString("collectionRole"));
    }
    System.out.println(stringList);
  

Это приведет к [program-chair, faculty]