Как редактировать внешний JSON файл в JavaScript?
Я создал небольшого чат-бота, следуя инструкциям Эстер Кроуфорд. Этот бот проверяет строку, введенную пользователем, и отвечает одним из моих ответов 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."
}
Мой вопрос: как отредактировать мой script.json в JavaScript?
В тот момент, когда пользователь вводит неизвестную строку, бот ответит, что не понимает.
script.js
if (!_.has(scriptRules, upperText)) {
return bot.say('Sorry I dont understand').then(() => 'speak');
}
Как я могу получить эту неизвестную строку пользователя и добавить ее в мой файл script.json, отредактировав в JSON мой JSON файл?
Я хочу, чтобы мой бот выучил сам, если он не знает ответа, он должен автоматически добавить вопрос о пользователе в файл script.json, спросить у пользователя ответ, а затем добавить этот ответ в файл script.json. тоже.
Большое спасибо за вашу помощь! Вы найдете этот проект на Git с полным кодом здесь.
Ответы
Ответ 1
Вы не можете сохранить файл, используя скрипт на стороне клиента, вы должны использовать некоторые скрипты на стороне сервера, такие как 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));
Надеюсь, поможет
Ответ 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":"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", привет: "bye" }
Затем вы можете преобразовать объект в строку, выполняющую JSON.stringify(parsedJson), и записать обратно на диск /DB, если вы манипулируете им в своем бэкэнд (например: NodeJs).
Ответ 4
Javascript (клиентская сторона), Имеет не возможность создавать, редактировать и т.д. файлы. Вы можете сделать это во внутренней стороне