как редактировать значение в json?

#javascript #json #reactjs

#javascript #json #reactjs

Вопрос:

Я использую axios, в ответ я получаю файл json. Насколько я знаю, axios по умолчанию преобразует файл json в объект. Вот как это выглядит:

 let newMessage{
      channel:"WHATSAPP",
      messages:"[{"message_type":"text","message_content":"call me back"}]",
      position_id:0,
    }
  

Но «сообщения» — это строка, она должна быть массивом. Итак, я json.разбираю сообщения, получаю «message_content» и присваиваю значение. Но значение не меняется. В чем может быть проблема?

 JSON.parse(newMessage.messages)[0].message_content = "xoxo"
  

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

1. Вы должны изменить JSON, чтобы он сохранялся в виде массива, а не строки, если у вас есть над ним контроль.

Ответ №1:

Значение исходной строки не изменяется, потому что ваш код изменяет объект, который был создан функцией JSON.parse(), а не исходную строку. Вам придется снова преобразовать это значение в строку, а затем перезаписать свойство «сообщения» объекта новой строкой:

 let newMessage = {
  channel: "WHATSAPP",
  messages: '[{"message_type ":"text ","message_content ":"call me back "}]',
  position_id: 0,
};

var messageArr = JSON.parse(newMessage.messages);
messageArr[0].message_content = "xoxo";
newMessage.messages = JSON.stringify(messageArr);
console.log(newMessage);  

PS Код в вашем вопросе не компилировался, поэтому я взял на себя смелость изменить его на то, что, как я предполагал, вы намеревались.

Ответ №2:

 let newMessage = {
  channel: "WHATSAPP",
  messages: '[{"message_type ":"text ","message_content ":"call me back "}]',
  position_id: 0,
};

let newmessageArr = JSON.parse(newMessage.messages);

newmessageArr[0].message_content = "xoxo";
newMessage.messages = JSON.stringify(newmessageArr);
console.log(newMessage);
  

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

1. Пожалуйста, добавьте сюда описание того, что вы изменили в коде или где была ошибка.