Добавление цитат в строковые значения объекта JSON

Мои строковые данные объекта не содержат кавычек вокруг значений объекта, что приводит к ошибке при попытке 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 }'

В моих данных есть только строковые значения, поэтому мне не нужно проверять типы значений. Как я могу изменить выражение регулярного выражения, чтобы добавить цитаты и к значениям объекта?

@ACD мое регулярное выражение в настоящее время добавляет кавычки к ключу объекта, но не добавляет кавычки к значению объекта

alyx 16.11.2018 05:01

Неужели невозможно исправить ту сторону, которая его неправильно генерирует?

zerkms 16.11.2018 05:03

@zerkms Да, эти данные поступают из дампа neo4j, преобразованного в CVS, но исходный источник не переносит кавычки

alyx 16.11.2018 05:04

есть ли гарантия, что специальные значения, такие как пробелы, ,, : или ", не будут присутствовать в строковом объекте? Если нет, как бы вы добавили цитаты к { a key: a value, maybe key: value: 2}?

lucascaro 16.11.2018 05:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
330
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать следующее регулярное выражение:

/[ ](?=\b)|\b(?=,|[ ])/g

Он начинает сопоставление пробела и использует опережающий поиск Word boundary. Затем он использует чередование Word boundary, за которым следует comma или Space.

Он использует флаг 'global' для соответствия всем.

Затем вы заменяете спички на double quote.

Другие вопросы по теме