【问题标题】:How to edit an external JSON-file in JavaScript?如何在 JavaScript 中编辑外部 JSON 文件?
【发布时间】:2021-02-02 15:24:02
【问题描述】:

我在the tutorial of Esther Crawford 之后创建了一个小聊天机器人。 该机器人检查输入用户的字符串并以我的 json 答案之一进行响应。

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

script.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

当用户输入未知字符串的那一刻,机器人会回答它不理解。

script.js

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

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

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

非常感谢您的帮助!你会在 git 上找到这个项目,完整代码 here

【问题讨论】:

  • 一,你想改变JSON文件的内存表示吗?还是存储在 Web 服务器上的实际 JSON 文件?二,如果是后者,问题更多的是“我怎样才能发布这些新数据,安全地过滤它,并将其保存到 JSON 文件中?”

标签: javascript json


【解决方案1】:

您不能使用客户端脚本保存在文件中,您必须使用一些服务器端脚本(如 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));

希望对你有帮助

【讨论】:

【解决方案2】:

不幸的是,没有服务器端代码 - 这将接受请求并将文件存储在服务器上 - 无法保存文件。
但是你可以使用 localStorage。

例如:

//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 阅读更多内容。
如果您希望它是临时的,您也可以使用会话存储。

【讨论】:

    【解决方案3】:

    假设你已经加载了你的 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 变量将如下所示:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2014-11-28
      • 2021-09-19
      • 2022-08-13
      • 2021-09-04
      • 1970-01-01
      • 2021-10-21
      相关资源
      最近更新 更多