JSON.stringify() 在值上带单引号,在键上不带引号

问题描述 投票:0回答:3

在 Javascript 中:打印 json 对象

var myObject = new Object;
myObject.type = "Fiat";
myObject.model = "500";
myObject.color = "White";

以下格式

{ 类型:'菲亚特',型号:'500',颜色:'白色' }

在 console.log 中。

但实际结果

{"type":"菲亚特","model":"500","color":"白色"}

挑战就在这里:

hackerrank 打印 JSON 对象

function printObjectProperty(myObject) {
  //Write your code here
console.log(JSON.stringify(myObject)); 
 //OR
console.log("{ type: '"+myObject.type+"', model: '"+myObject.model+"', color: '"+myObject.color+"'}"); //OR THERE COULD BE A BETTER GENERIC SOLUTION
}
javascript node.js json typescript
3个回答
11
投票

您可以使用以下代码:

var json = JSON.stringify(myObject);  // {"type":"Fiat","model":"500","color":"White"}
console.log(json);
var unquoted = json.replace(/"([^"]+)":/g, '$1:');
console.log(unquoted);  // {type:"Fiat",model:"500",color:"White"}
var result = unquoted.replaceAll("\"", "'");
console.log(result); // {type:'Fiat',model:'500',color:'White'}

3
投票

JSON.stringify() 值上不带单引号,键上不带引号

你不能。按设计。

JSON 规范 要求所有属性名称都用双引号括起来并解析为 JSON 字符串:

1.简介

[...]
对象是零个或多个名称/值对的无序集合,其中名称是字符串,值是字符串、数字、布尔值、null、对象或数组。

4.对象

对象结构表示为一对围绕零个或多个名称/值对(或成员)的大括号。 名称是一个字符串。 每个名称后面都有一个冒号,将名称与值分开。 单个逗号将值与后面的名称分隔开。


0
投票

您要求的实际上是一种名为“json5”的格式。

https://json5.org/

安装并使用 json5 npm 包。

© www.soinside.com 2019 - 2024. All rights reserved.