Похоже, что сервер ожидает формат JSON (application / json), тогда:
{key: value, key1: value1}
не является допустимым JSON
{key: "value", key2: "value2"}
is недопустимо JSON
Если вы получаете эти значения из какого-либо поля ввода (HTML), то вы можете создать проверку перед отправкой значений на сервер и запросом пользователей исправить данные. , Эта проверка может быть легко разработана с помощью объекта JavaScript JSON, например:
function isJSONValid(str) {
let isValid = false;
try {
JSON.parse(str);
isValid = true;
}
catch (x) {}
return isValid;
}
Но если вы действительно хотите автоматически исправить входные данные, это может быть довольно сложно, потому что это трудно понять все виды ошибок, которые может сделать пользователь (если не невозможно). Вы упомянули простой JSON, но что если у него есть массивы, JSON внутри JSON и т. Д. c? Например:
{ "field1": "{ field2: [ value1, "value2"] }", field3: value3 }
Обратите внимание, что в моем примере выше, есть несколько ошибок.
Если вы хотите автоматически исправлять только ошибки в кавычках для простых JSON (без учета массивов, цифр * 1031) * значения, JSON внутри JSON, et c), код ниже может помочь. Но даже в этом случае возможны и другие ошибки. Проверка важна!
function adjustQuotationMarks(str) {
let newStr = str;
newStr = newStr.replace(/"/g, '');
newStr = newStr.replace(/{/g, '{ ');
newStr = newStr.replace(/ ([^ ]+):/g, '"$1":');
newStr = newStr.replace(/:([^:]+),/g, ':"$1",');
newStr = newStr.replace(/:([^:]+)}/g, ':"$1"}');
let newObj = {};
JSON.parse(newStr, (key, value) => {
if (value.trim) newObj[key] = value.trim();
});
return JSON.stringify(newObj);
}
Удачи.