Как вставить значение в дооснащение?

Я пытаюсь отправить запрос PATCH для моего модифицированного API.

Когда я делаю запрос на исправление, API ожидает эту структуру значений.

[
{
    "propName":"username","value":"bruno70"

},
{
    "propName":"email","value":"[email protected]"
}
]

Итак, в Android studio у меня есть две модели:

UpdateUser, который получает различные требуемые propNames и значения:

public class UpdateUser {

 List<UpdateUserzinho> userzinhos;

public void setUserzinhos(List<UpdateUserzinho> userzinhos) {
    this.userzinhos = userzinhos;
}

}

Затем у меня есть модель, которая содержит набор имен и значений свойств:

public class UpdateUserzinho {

private String propName;
private String value;

public String getPropName() {
    return propName;
}

public void setPropName(String propName) {
    this.propName = propName;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

}

Итак, мы вставляем все имена и значения свойств в модель UpdateUser, которая вносится в модель пользователя, которая выглядит следующим образом:

public class User {

@SerializedName("_id")
private String id;

@SerializedName("username")
private String username;

@SerializedName("email")
private String email;

@SerializedName("contact")
private String contact;

@SerializedName("zipcode")
private String zipcode;

@SerializedName("userImage")
private String userImage;

@SerializedName("password")
private String password;

@SerializedName("is_admin")
private String isadmin;

public User(String id, String username, String email, String contact, String zipcode, String userImage, String password, String isadmin) {
    this.id = id;
    this.username = username;
    this.email = email;
    this.contact = contact;
    this.zipcode = zipcode;
    this.userImage = userImage;
    this.password = password;
    this.isadmin = isadmin;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getContact() {
    return contact;
}

public void setContact(String contact) {
    this.contact = contact;
}

public String getZipcode() {
    return zipcode;
}

public void setZipcode(String zipcode) {
    this.zipcode = zipcode;
}

public String getUserImage() {
    return userImage;
}

public void setUserImage(String userImage) {
    this.userImage = userImage;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getIsadmin() {
    return isadmin;
}

public void setIsadmin(String isadmin) {
    this.isadmin = isadmin;
}
}

Проблема в том, что, хотя я могу успешно объединить значения, выполнив (жестко запрограммированный только для примера):

  UpdateUser updateUser = new UpdateUser();
            List<UpdateUserzinho> updateUserzinhoList = new ArrayList<>();
            String propName1 = "username";
            String username = "bruno70";
            String email = "email";

            UpdateUserzinho updateUsername = new UpdateUserzinho();
            updateUsername.setPropName(propName1);
            updateUsername.setValue(username);

            UpdateUserzinho updateemail = new UpdateUserzinho();
            updateemail.setPropName("email");
            updateemail.setValue("[email protected]");
            updateUserzinhoList.add(updateUsername);
            updateUserzinhoList.add(updateemail);
            updateUser.setUserzinhos(updateUserzinhoList);

Затем я вызываю на сервер модель updateUser, которая все работает нормально, однако вывод следующий:

{"userzinhos":[{"propName":"username","value":"bruno70"},{"propName":"email","value":"[email protected]"}]}

Итак, API не принимает значения, потому что у него есть "{" userzinhos ":" в начале и "}" в конце. Я должен избавиться от них, чтобы мой API принял значения.

Я попытался преобразовать его в String и отправить строку, преобразованную в JSON, но android автоматически структурирует ее, помещая "\" между интервалами, что приводит к тому, что API не обнаруживает значения.

Я также подумал о том, чтобы иметь безымянный список (если это возможно). Итак, если "userzinhos" не назван каким-либо образом, он технически не будет добавлять значения, о которых я упоминал ранее.

Кроме того, код API, который получает запрос PATCH, выглядит так:

   exports.edit_user = (req, res, next) => {
  const id = req.params.userId;
  const updateOps = {};

  for (const ops of req.body) {
    updateOps[ops.propName] = ops.value;
  }

  User.update({ _id: id }, { $set: updateOps })
    .exec()
    .then(result => {
      res.status(200).json({
        message: "User updated"
      });
    })
    .catch(err => {
      console.info(err);
      res.status(500).json({
        error: err
      });
    });
};

Это для школьного проекта.

установите List<UpdateUserzinho> в качестве тела запроса вместо UpdateUser в вашем интерфейсе модернизации

Saurabh 13.07.2018 13:05

Вот что такое updateuser или нет? UpdateUser - это в основном список Updateuserzinho

Sashiimi 13.07.2018 13:10

оба отличаются, так как когда у вас есть объект, JSON начинается с {, но со списком / массивом он начинается с [, что вам нужно.

Saurabh 13.07.2018 13:12

Точно ... Это было "то же самое", только не то. Несколько изменений в коде позволяют мне обновить его сейчас. Спасибо!

Sashiimi 14.07.2018 00:09

Обратите внимание, что здесь мы предпочитаем технический стиль письма. Мы мягко не приветствуем приветствия, надеемся, что вы можете помочь, спасибо, заранее спасибо, благодарственные письма, приветы, добрые пожелания, подписи, пожалуйста, не могли бы вы помочь, болтливые материалы и сокращенные txtspk, мольбы, как долго вы застряли, советы по голосованию, мета-комментарии и т. д. Просто объясните свою проблему и покажите, что вы пробовали, чего вы ожидали и что на самом деле произошло.

halfer 18.07.2018 08:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
139
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо UpdateUser вы должны использовать List< UpdateUserzinho> для отправки на сервер.

Пожалуйста, проверьте это изменение, я сделал неверную ссылку ранее. В основном сервер принимает массив / список объектов, хотя то, что вы отправляете, является объектом с ключом «userzinhos», у которого есть требуемый список.

Rahul Thakur 13.07.2018 13:13

Большое спасибо! Я думал, что делаю то же самое, что теоретически и было, но сервер не принимал это

Sashiimi 14.07.2018 00:11

Другие вопросы по теме