Parse Javascript Object в JSON -подобную строку, но с одинарными кавычками - PullRequest
0 голосов
/ 14 марта 2020

Это мой Javascript объект, который я преобразовал в строку (JSON)

var myObj = {
    name: 'John',
    age: 25,
    group: 'O+'
}

console.log(JSON.stringify(myObj));

Мне нужен вывод с одинарными кавычками (апострофы) ('), а не с двойными кавычками ("). Также нет кавычек или апострофов на индексах / ключах. Я хочу это чтобы выглядеть так:

{name:'John',age:25,group:'O+'}

Я пробовал это:

var myObj = {
    name: 'John',
    age: 25,
    group: 'O+'
}

console.log(JSON.stringify(myObj).replace(/"([^"]+)":/g, '$1:'));

Это удаляет кавычки на индексах / ключах, но значения по-прежнему содержат кавычки. Нужно заменить их апострофами. Попробовал еще несколько регулярных выражений, но они не работали.

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Если вы добавите еще несколько замен в конце этой строки, вы можете получить то, что хотите. Вот ваш пример:

var myObj = {
    name: 'John',
    age: 25,
    group: 'O+'
}

console.log(JSON.stringify(myObj).replace(/"([^"]+)":/g, '$1:').replace(/\\"/g, '"')
    .replace(/([\{|:|,])(?:[\s]*)(")/g, "$1'")
    .replace(/(?:[\s]*)(?:")([\}|,|:])/g, "'$1")
    .replace(/([^\{|:|,])(?:')([^\}|,|:])/g, "$1\\'$2"));

Вы можете найти этот точный пример на другом форуме на stackexchange. Вот ссылка .

0 голосов
/ 14 марта 2020

Вы можете использовать JSON.parse reviver для форматирования значений следующим образом.

var myObj = {
    name: 'John',
    age: 25,
    group: 'O+',
    bool:true,
    hello:{
        a:'bb'
    }
}
const reviver =(key, value)=>{
if(typeof value === 'string'){
  return `'${value}'`
}
return value
}
var a = JSON.parse(JSON.stringify(myObj), reviver);
console.log(JSON.stringify(a).replace(/"/g,''));
...