我在 Esther Crawford 的the tuto之后创建了一个小聊天机器人。 这个机器人检查输入用户的字符串并用我的一个json答案回复。
例如,如果我说“hello”,机器人会回复“嘿,我很高兴你设置了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 my json文件中编辑来获取用户的这个未知字符串并将其添加到我的 script.json 文件中?
我希望我的机器人自己学习,如果他不知道答案,它会自动在 script.json 文件中添加用户的问题并要求答案用户。然后在 script.json 文件中添加此答案。
要恢复:如何在javascript中编辑json文件?
很多感谢您的帮助! Here你将在git上找到完整代码的这个项目
ps:我的应用是 heroku 的主机。
答案 0 :(得分:13)
您无法使用客户端脚本保存在文件中,您必须使用某些服务器端脚本(如PHP,NodeJS等)来保存文件中的内容。
例如,在NodeJS中,您可以使用fs库:
fs = require('fs');
var m = JSON.parse(fs.readFileSync('fileName.json').toString());
m.forEach(function(p){
p.name= m.name;
});
fs.writeFile('fileName.json', JSON.stringify(m));
希望有所帮助
答案 1 :(得分:5)
不幸的是,没有服务器端代码 - 需要请求&将文件存储在服务器上 - 无法保存文件 但是你可以使用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阅读更多内容。
如果您希望会话存储是临时存储,也可以使用会话存储。
答案 2 :(得分:3)
假设您已经加载了JSON:
var json = '{"hola":"chao"}';
//Parse the JSON: convert it into an object
var parsedJson =JSON.parse(json);
//add whatever you want
parsedJson.hi = 'bye';
您的json var将如下所示:Object {hola:" chao",hi:" bye"}
然后,您可以将对象转换为执行JSON.stringify(parsedJson)的字符串,如果您在后端操作它(即:NodeJs),则将其写回磁盘/数据库。
答案 3 :(得分:0)
Javascript(客户端),有 不功能来创建,编辑等..文件。您可以在后端进行此操作