【问题标题】:Convert Object to string in javascript without the quotes in key将对象转换为 javascript 中的字符串,没有键中的引号
【发布时间】:2023-03-03 23:39:01
【问题描述】:

如何将 Object 转换为字符串,以便输出如下所示:

例如let a = {b: "c"}

假设上面的例子是我们的示例对象。现在我们可以使用JSON.stringify(a) 将其转换为字符串但输出,

console.log(a) -> {"b": "c"} 但我想要这样的东西:{b: "c"} 的原始对象格式。

【问题讨论】:

  • 当对循环有疑问时
  • 为什么要原始的无效 JSON 格式?
  • @mplungjan 我需要将此对象作为 graphql 查询的一部分传递。问题是我只能这样传递它:(a:“b”,c:“d”)。如果字符串是这样的,它会抛出错误: ("a": "b", "c":"d")
  • 那很不幸。也许修复或要求修复 graphql 代码

标签: javascript


【解决方案1】:

您可以尝试使用 Reg-ex,在 String.prototype.replace 调用中使用 $1 将第一次出现的 "" 替换为空白字符:

const a = JSON.stringify({a: "a", b: "b", c: "c"}).replace(/"(\w+)"\s*:/g, '$1:');
console.log(a);

【讨论】:

    【解决方案2】:

    此代码取自this answer

    有一个更简单的正则表达式解决方案,但它有一个正则表达式固有的缺点。对于复杂和嵌套对象中的某些边缘情况,它不起作用。

    const data = {a: "b", "b": "c",
                  c: {a: "b", "c": "d"}}
    
    console.log(stringify(data))
    
    function stringify(obj_from_json){
        if(typeof obj_from_json !== "object" || Array.isArray(obj_from_json)){
            // not an object, stringify using native function
            return JSON.stringify(obj_from_json);
        }
        // Implements recursive object serialization according to JSON spec
        // but without quotes around the keys.
        let props = Object
            .keys(obj_from_json)
            .map(key => `${key}:${stringify(obj_from_json[key])}`)
            .join(",");
        return `{${props}}`;
    }

    【讨论】:

      【解决方案3】:

      你可以试试javascript-stringify npm 包。

      【讨论】:

        猜你喜欢
        • 2021-12-06
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        • 2014-11-28
        • 2017-09-29
        相关资源
        最近更新 更多