将 Javascript 对象解析为类似于 JSON 的字符串,但使用单引号

Parse Javascript Object to JSON-like string, but with single quotes

这是我转换成字符串的 Javascript 对象 (JSON)

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

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

我需要带有单引号(撇号)(') 而不是双引号 (") 的输出。indexes/keys 上也没有引号或撇号。我希望它看起来像这样:

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

我试过这个:

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

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

这会删除 indexes/keys 上的引号,但值中仍然有引号。需要用撇号替换它们。尝试了更多的正则表达式,但它们没有用。

如果你在那个stringify的末尾添加更多的替换,你实际上可以得到你想要的。这是您的示例:

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

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

您可以在 stackexchange 的不同论坛上找到这个确切的示例。这里是 link.

您可以使用 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,''));