如何在JSON中编辑值?

时间:2019-04-09 09:44:15

标签: javascript json reactjs

我正在使用axios,响应时我正在获取json文件。据我所知,axios默认情况下会将json文件转换为对象。这是它的外观:

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

但是“ messages”是一个字符串,应该是一个数组。所以我json.parse消息,获取“ message_content”并分配一个值。但是价值不变。可能是什么问题?

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

2 个答案:

答案 0 :(得分:0)

原始字符串的值不会更改,因为您的代码正在更改由JSON.parse()函数生成的对象,而不是原始字符串。您必须再次对该值进行字符串化,然后使用新的字符串覆盖对象的“ messages”属性:

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);

P.S。您问题中的代码未编译,因此我可以自由地将其更改为我认为的目标。

答案 1 :(得分:0)

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);