Мои строковые данные объекта не содержат кавычек вокруг значений объекта, что приводит к ошибке при попытке JSON.parse():
'{ "affiliation": CORPORATE, "userId": 75c35d1c-5d12-4485-8fa8-b2f1551a3e6e }'
Мне нужно, чтобы строка была:
'{ "affiliation": "CORPORATE", "userId": "75c35d1c-5d12-4485-8fa8-b2f1551a3e6e" }'
Я использую это регулярное выражение для добавления кавычек к ключам объекта:
var newStr = str.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": ');
Например:
'{ affiliation: CORPORATE }' в '{ "affiliation": CORPORATE }'
В моих данных есть только строковые значения, поэтому мне не нужно проверять типы значений. Как я могу изменить выражение регулярного выражения, чтобы добавить цитаты и к значениям объекта?
Неужели невозможно исправить ту сторону, которая его неправильно генерирует?
@zerkms Да, эти данные поступают из дампа neo4j, преобразованного в CVS, но исходный источник не переносит кавычки
есть ли гарантия, что специальные значения, такие как пробелы, ,, : или ", не будут присутствовать в строковом объекте? Если нет, как бы вы добавили цитаты к { a key: a value, maybe key: value: 2}?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать следующее регулярное выражение:
/[ ](?=\b)|\b(?=,|[ ])/g
Он начинает сопоставление пробела и использует опережающий поиск Word boundary. Затем он использует чередование Word boundary, за которым следует comma или Space.
Он использует флаг 'global' для соответствия всем.
Затем вы заменяете спички на double quote.
@ACD мое регулярное выражение в настоящее время добавляет кавычки к ключу объекта, но не добавляет кавычки к значению объекта