Не могу передать json в formData, как отправить?

Здравствуйте! Необходимо отправить регистрационные данные + загруженное изображение на сервер. Пытаюсь передать json с помощью formData, изображение передается, а json передается некорректно (преобразовывается в строку), а мне нужно именно объект отправить. Как быть?
Текущий объект:
city: "Екатеринбург"
contacts: [
{contact_type: "mail", contact: "доп.маил1"},
{contact_type: "mail", contact: "телефон"},
{contact_type: "phone", contact: "доп.маил2"}
],
email: "mail"
middlename: "Отчество"
name: "Имя"
password: "1234"
password_confirm: "1234"
surname: "Фамилия"


Код добавления в formData:
for (let k in arr) {
                if (k === "contacts") {
                    for (let i in arr[k]) {
                        formData.append("contacts", arr[k][i]);
                    }
                } else {
                    formData.append(k, arr[k]);
                }
            }
formData.append("photo", img);

Полученные значения на сервере:
<QueryDict: {'email': ['test@gmail.com'], 'password': ['1234'], 'password_confirm': ['1234'], 'surname': [''], 'name': [''], 'middlename': [''], 'contacts': ['[object Object],[object Object],[object Object]'], 'city': ['null'], 'photo': [<InMemoryUploadedFile: sanya.jpg (image/jpeg)>]}>
  • Вопрос задан
  • 2629 просмотров
Решения вопроса 1
@Dgacarda Автор вопроса
Решил проблему так:
Заполнение formData:
for (let k in arr) {
                if (k === "contacts") {
                    for (let i in arr[k]) {
                        formData.append("contacts", JSON.stringify(arr[k][i]));
                    }
                } else {
                    formData.append(k, JSON.stringify(arr[k]));
                }
            }

Полученные значения:
<QueryDict: {'email': [''], 'password': ['null'], 'password_confirm': ['null'], 'surname': [''], 'name': [''], 'middlename': [''], 'contacts': ['{"contact_type":"mail","contact":"ываыва"}', '{"contact_type":"mail","contact":"ывааааа"}'], 'city': ['null'], 'photo': ['undefined']}>

На сервере с помощью json.loads из строки получил json
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы