【问题标题】:Parse Javascript Object to JSON-like string, but with single quotes将 Javascript 对象解析为类似 JSON 的字符串,但使用单引号
【发布时间】:2020-06-26 05:55:46
【问题描述】:

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

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:'));

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

【问题讨论】:

  • 您应该问自己为什么需要以这种特定方式打印它。它是一个对象,不是为打印而设计的。

标签: javascript parsing stringify


【解决方案1】:

如果您在该字符串化的末尾添加更多替换,您实际上可以得到您想要的。这是您的示例:

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 的另一个论坛上找到这个确切的示例。这是link

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这会改变年龄的字段类型。
    猜你喜欢
    • 2016-07-02
    • 1970-01-01
    • 2013-05-12
    • 2018-12-14
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多