如何在 JavaScript 中编辑外部 JSON 文件

How to edit an external JSON-file in JavaScript?

本文关键字:外部 JSON 文件 编辑 JavaScript      更新时间:2023-09-26

我按照Esther Crawford的教程创建了一个小聊天机器人。此机器人检查输入用户的字符串,并使用我的 json 答案之一进行响应。

例如,如果我说"你好",机器人会回应"嘿,我很高兴你设置了 EstherBot!

脚本.json

{
    "HELLO": "Hey, I'm so glad you set EstherBot up!",
    "I LOVE YOU": "Awh, shucks! I love you too!",
    "CONNECT ME": "",
    "DISCONNECT": "Roger that, EstherBot is back."
}
我的

问题是:如何在JavaScript中编辑我的script.json

当用户输入未知字符串时,机器人将回答它不理解。

脚本.js

if (!_.has(scriptRules, upperText)) {
    return bot.say('Sorry I dont understand').then(() => 'speak');
}

我如何获取用户的这个未知字符串并通过在 JavaScript 中编辑我的 JSON 文件将其添加到我的 script.json 文件中?

我希望我的机器人自己学习,如果他不知道答案,它应该自动将用户的问题添加到 script.json 文件中,向用户询问答案,然后将此答案也添加到 script.json 文件中。

非常感谢您的帮助!你可以在 git 上找到这个项目,其中包含完整的代码 这里.

你不能使用客户端脚本保存在文件中,你必须使用一些服务器端脚本,如PHP,NodeJS等来保存文件中的内容。

例如,在 NodeJS 中,您可以使用 fs 库:

fs = require('fs');
var name = 'fileName.json';
var m = JSON.parse(fs.readFileSync(name).toString());
m.forEach(function(p){
    p.name= m.name;
});
fs.writeFileSync(name, JSON.stringify(m));

希望对你有帮助

不幸的是,如果没有服务器端代码 - 这将接受请求并将文件存储在服务器上 - 不可能保存文件。
但是,您可以使用本地存储。

例如:

//If statement to check if localStorage already stored.
if (!localStorage.script) {
    localStorage.script = JSON.stringify({
"HELLO": "Hey, I'm so glad you set EstherBot up!",
"I LOVE YOU": "Awh, shucks! I love you too!",
"CONNECT ME": "",
"DISCONNECT": "Roger that, EstherBot is back."
}) ;
}
//This will load the localStorage data into an object in the varaible called botScript
var botScript = JSON.parse(localStorage.script) ;
function saveScript() {
    //This will save the current object to the localStorage.
    localStorage.script = JSON.stringify(botScript) ;
}

您可以在 http://www.w3schools.com/html/html5_webstorage.asp 阅读更多内容。
如果您希望会话存储是临时的,也可以使用会话存储。

假设你已经加载了 json:

var json = '{"hola":"ciao"}';
//Parse the JSON: convert it into an object
var parsedJson =JSON.parse(json);
//add whatever you want
parsedJson.hi = 'bye';

您的 json var 将如下所示:

Object {hola: "ciao", hi: "bye"}

然后,您可以将对象转换为字符串,执行JSON.stringify(parsedJson)并在后端(即:NodeJs)中操作它,则写回磁盘/数据库。