В общем, ответ на плохо отформатированные данные - исправить средство форматирования, а не реализовать синтаксический анализатор. Однако я работал с системами, которые кодируют такие данные, поэтому вот парсер.
function parseSquareSeparatedData(data) {
const result = {};
Object.keys(data).forEach((key) => {
const keyParts = key.replace(/]/g, "").split("[");
const last = keyParts.pop();
let resultPointer = result;
keyParts.forEach((keyPart) => {
if (!(keyPart in resultPointer)) {
resultPointer[keyPart] = {};
}
resultPointer = resultPointer[keyPart];
})
resultPointer[last] = input[key];
})
return result;
}