Как редактировать внешний 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 (клиентская сторона), Имеет не возможность создавать, редактировать и т.д. файлы. Вы можете сделать это во внутренней стороне