const text = "{a:[1,2,{b:3}],c:{d:4},\"e\":\"qqq\"}";
const json = text.replace(/(?<=[\{,]\s*)([^",\{]*?)(?=\s*:)/g, a=>{
return '"'+a+'"';
});
console.log(text); // {a:[1,2,{b:3}],c:{d:4},"e":"qqq"}
console.log(json); // {"a":[1,2,{"b":3}],"c":{"d":4},"e":"qqq"}
const obj = JSON.parse(json);
Александр, вот мой вариант, тоже наверное может сломаться (если в названии ключа должны быть запятая или левая фигурная скобка, а так же если одно из значений будет содержать что то типа "{cat: 5}"), но все остальные варианты отработает на ура