簡體   English   中英

如何在 JavaScript 中編輯外部 JSON 文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM