gpt4 book ai didi

javascript - 为什么它在保存的文件中添加反斜杠?

转载 作者:行者123 更新时间:2023-12-04 08:54:10 24 4
gpt4 key购买 nike

我有一些代码应该已经在 .json 文件中保存一个单词和其他单词,它 KINDA 完成了这项工作,它将文件(fs.readFileSync)作为常量读取,当使用 fs.WriteFileSync 保存时,它只是放置随机 ' s 在这样的文本中 enter image description here
我不知道它为什么这样做,但它真的很烦人(readBl 是一个读取它并将其保存为变量的函数,所以当我想要时,我可以使用命令读取它,我知道我可以做到除了 IDC 以外的其他方式)我的代码:

if(msg.content.startsWith('-addconf '))
{
var newword = msg.content.slice(9);

if(blacklisted.includes(newword))
return msg.channel.sendMessage("This word has already been blacklisted.")

let rawdata = fs.readFileSync('blacklist.json');
let rawRead = JSON.parse(rawdata);

const str = JSON.stringify(rawRead);

const str1 = str.replace('}', '');
const str2 = str1.replace('{"blacklist":', '');
//const str3 = str2.replace('""', '');

let balance = {
blacklist: str2 + newword
};

let data = JSON.stringify(balance);
fs.writeFileSync('blacklist.json', data);

readBl();
msg.channel.sendMessage("Added a blacklisted word, test it out.")
}

最佳答案

JSON 值(如键)用双引号括起来。

{ "someKey": "someValue" } 
那么,如何编写一个包含引号的值,例如 some"Value"With"Quotes"In"It ?你在这里可能会更糟......
(更重要的是,JSON 解析器应该如何读回这样的值?
是值 some ?这是语法错误吗?
在 JSON 中,就像在许多其他需要分隔符的上下文中一样,我们需要有一种方法来告诉引号 "不是结束值的语法元素,而是作为值一部分的某些字符。
解决办法:逃避
所以我们做了所谓的“逃避” Angular 色。在 JSON(和其他语言)中,转义是通过添加反斜杠前缀来完成的 \ .
而且...由于反斜杠现在也是一个特殊字符,用于转义另一个字符,您又遇到了同样的问题:如何在值本身中表示实际的反斜杠?
简单,相同的解决方案:您逃避反斜杠本身。
因此,在保存 JSON 字符串值时:
  • 报价 "成为\" ;
  • 反斜杠 \成为\\ .

  • 怎么读回来?
    任何正常运行的 JSON 阅读器都会正确读取 ,这是序列化这些字符的正确方法,因此您在这里没有任何问题!

    关于javascript - 为什么它在保存的文件中添加反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63925731/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com