JSON.stringify 不带引号的键

bla*_*e20 8 javascript json

是否可以从 JSON.stringify 中的键中删除引号?通常它会有引号:

const object = { name: "Foo Bar", birthdate: { date: "2000-01-01", time: "12:34" } };
console.log(JSON.stringify(object, null, "    "));
Run Code Online (Sandbox Code Playgroud)

输出:

{
    "name": "Foo Bar",
    "birthdate": {
        "date": "2000-01-01",
        "time": "12:34"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的:

{
    name: "Foo Bar",
    birthdate: {
        date: "2000-01-01",
        time: "12:34"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是否可能,或者我是否必须创建自己的 JSON 序列化器?

小智 2

听起来您正在寻找一种人类可读且版本控制友好但对引号不像 JSON 那样严格的数据序列化格式。

此类格式包括:

  • Relaxed JSON (RJSON)(简单键和简单值一般不需要引号)
  • Hjson(简单键和简单值一般不需要引号)
  • YAML(键和值通常不需要引号)
  • JavaScript 对象字面量(当传递 JavaScript 对象时,也会由“console.dir()”的许多实现打印出来;简单的键通常不需要加引号,但字符串值必须用单引号或双引号引起来)

为了完整性:

JSON(需要在键(也称为属性名称)周围使用双引号,并且需要在字符串数据值周围使用双引号)。