Цикл по получению значения из JSON

hearManager.hear('/test', async (context) => {
    var buffer = fs.readFileSync("result.json", "utf-8");
    json = JSON.parse(buffer)
    
    while(Object.keys(json).length > 1){
        names = Object.keys(json);
        lessons = []
        for(let i = 0; i<names.length; i++){
            lessons[i] = (i+1).toString() +". "+names[i];
        }
        context.send(lessons.join("\n"));
        const answer = await context.question("Выберите (от 1 до " + lessons.length.toString() + ")");
        json = json[names[Number(answer.text)-1]]
        if (JSON.stringify(json).includes("{") == false && JSON.stringify(json).includes("https") == true) break;
    }
    context.send(JSON.stringify(json))
});

Есть такой код, который работает до получения финального значения из JSON. Сам файл выглядит примерно вот так:

{
    "Гдз по Математике": {
        "1": {
            "ГДЗ Математика 1 класс  М.И. Моро Просвещение 2016": {
                "Часть 1": {
                    "Страница 4": {
                        "1": "https://gdz.ru/class-1/matematika/moro-m-i-2011/1-4-1/",
                        "2": "https://gdz.ru/class-1/matematika/moro-m-i-2011/1-4-2/",
                        "3": "https://gdz.ru/class-1/matematika/moro-m-i-2011/1-4-3/"
                    },
    ...

И я ищу более этичный способ по поиску значения, чтобы убрать костыль:

if (JSON.stringify(json).includes("{") == false && JSON.stringify(json).includes("https") == true) break;

Т.к. когда он доходит до ссылки, он начинает её разбивать по буквам и также хотелось бы чтобы в итоге он получал значение не в форме "ссылка", а просто текст ссылка без двойных кавычек.


Ответы (0 шт):