t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как в Restassured поместить в запрос Json массив объектов

Теги: #<Tag:0x00007fd76e9e3228> #<Tag:0x00007fd76e9e30e8> #<Tag:0x00007fd76e9e2ff8> #<Tag:0x00007fd76e9e2f30>

Здравствуйте. Мне нужно передать Json запрос такого вида:

{user_id, contacts: [], workplaces: [], specialities: []. regalia: []}

С “user_id” проблем нет - передается через Hashmap:

Map<String, Object> jsonAsMapProfileID = new HashMap<>();
jsonAsMapProfileID.put("user_id", "5b72dcc05bc4a619586eae12");

Но как добавить в запрос массив значений “contacts” типа

contacts{email: "dfjsfl@mail.ru", phone: "+7 (987) 897-98-74", instagram: "Inst"}

?

используйте один из
com.google.gson.JsonSerializer
org.json.JSONObject
org.codehaus.jackson.*

Используй “com.google.gson”

Пример:

JsonObject json = new JsonObject();
json.addProperty(“user_id”, user_id);
JsonArray contacts = new JsonArray();
JsonArray workplaces = new JsonArray();
JsonArray specialities = new JsonArray();
JsonArray regalia = new JsonArray();
json.add(“contacts”, contacts);
json.add(“workplaces”, workplaces);
json.add(“specialities”, specialities);
json.add(“regalia”, regalia);
1 Симпатия

Немного дольше по времени, но проще потом работать, если вы просто опишите модель

public class UserInfo {
    private String user_id;
    private Collection<Contact> contacts;
    private Collection<Workplace> workplaces;
    private Collection<Speciality> specialities;
    private Collection<Regalia> regalia;

    //геттеры и сеттеры
}

Создаете userInfo (новый экземпляр или маппите с помощью Gson | Jackson)
а потом просто

given()....body(userInfo).when().post().then()...
1 Симпатия

Если используете Itelij IDEA, очень советую плагин https://plugins.jetbrains.com/plugin/8634-robopojogenerator для генерации json обьектов + Lombok https://projectlombok.org/features/all чтоб убрать все лишние поля из сгенереных обьектов

2 Симпатий

Спасибо за такое количество советов. Я же проснулся с озарением и реализовал все через создание дополнительных Map-ов, без дополнительных библиотек. Какие есть минусы у такого подхода?

Map<String, Object> jsonAsMapProfile = new HashMap<>();
Map<String, Object> jsonAsMapProfileworkplaces = new HashMap<>();
Map<String, Object> jsonAsMapProfileservices = new HashMap<>();
Map<String, Object> jsonAsMapProfilechildren = new HashMap<>();
Map<String, Object> jsonAsMapProfileContact = new HashMap<>();
String SpecList[] = {Specialities};

    jsonAsMapProfile.put("user_id", UserID);
    jsonAsMapProfile.put("workplaces", jsonAsMapProfileworkplaces);
    jsonAsMapProfileworkplaces.put("depart", Depart);
    jsonAsMapProfileworkplaces.put("post", Post);
    jsonAsMapProfileworkplaces.put("role", Role);
    jsonAsMapProfile.put("specialities", SpecList);
    jsonAsMapProfile.put("services", jsonAsMapProfileservices);
    jsonAsMapProfileservices.put("label", Label);
    jsonAsMapProfileservices.put("id", ID);
    jsonAsMapProfileservices.put("children", jsonAsMapProfilechildren);
    jsonAsMapProfilechildren.put("label", LabelChild);
    jsonAsMapProfilechildren.put("cost", Cost);
    jsonAsMapProfilechildren.put("id", IDchild);
    jsonAsMapProfile.put("regalia", Regalia);
    jsonAsMapProfile.put("contacts", jsonAsMapProfileContact);
    jsonAsMapProfileContact.put("email", EmailCont);
    jsonAsMapProfileContact.put("phone", PhoneCont);
    jsonAsMapProfileContact.put("instagram", Instagram);
    jsonAsMapProfileContact.put("vk", Vk);
    jsonAsMapProfileContact.put("whatsapp", Whatsapp);
    jsonAsMapProfileContact.put("viber", Viber);
    jsonAsMapProfileContact.put("facebook", Facebook);
    jsonAsMapProfileContact.put("another", Other);