如何:在javascript中编辑外部json文件

时间:2016-04-26 15:38:59

标签: javascript json

我在 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 的主机。

4 个答案:

答案 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(客户端), 功能来创建,编辑等..文件。您可以在后端进行此操作