Здравствуйте. Мне нужно передать 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"}
?
sergueik
(Сергей Кузьмин)
15.Август.2018 01:07:37
#2
используйте один из
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 Stable чтоб убрать все лишние поля из сгенереных обьектов
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);