使用Axios获取JSON后修改message_content值无效的问题排查
问题原因与解决方案
这个问题我之前也碰到过,核心原因是你忽略了JSON.parse(newMessage.messages)返回的是一个完全独立的新数组对象——你修改这个新数组里的元素后,并没有把修改后的结果同步回原对象的messages字段,而原messages本身还是个字符串,和你修改的新数组完全是两个独立的东西,自然看不到变化。
具体解决步骤
要让修改生效,你需要把修改后的数组重新转回JSON字符串,再赋值回newMessage.messages:
// 1. 先把messages字符串解析成可操作的数组 const messagesArray = JSON.parse(newMessage.messages); // 2. 修改数组中的目标内容 messagesArray[0].message_content = "xoxo"; // 3. 将修改后的数组重新转为JSON字符串,覆盖原messages字段 newMessage.messages = JSON.stringify(messagesArray);
为什么之前的操作不生效?
再拆解一下逻辑帮你理解:
JSON.parse会基于原字符串创建一个全新的数组对象,它和原字符串没有任何引用关联- 你修改这个新数组的内容,只会改变这个临时的新对象,原
newMessage.messages的字符串值完全没被触动 - 只有把修改后的数组重新转成字符串并赋值回去,原对象的
messages字段才会真正更新
内容的提问来源于stack exchange,提问作者Yerlan Yeszhanov
相关产品推荐
相关产品推荐

