[英]How to edit an external JSON-file in JavaScript?
我按照Esther Crawford 的教程創建了一個小聊天機器人。 這個機器人檢查輸入用戶的字符串並用我的 json 答案之一進行響應。
例如,如果我說“你好” ,機器人會回應“嘿,我很高興你設置了 EstherBot!”
腳本文件
{
"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-file 來獲取用戶的這個未知字符串並將其添加到我的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));
希望它有幫助
不幸的是,如果沒有服務器端代碼——這將需要一個請求並將文件存儲在服務器上——就不可能保存文件。
但是,您可以使用 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 。
如果您希望它是臨時的,您也可以使用會話存儲。
假設您已經加載了 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)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.