nodejs在输出中跳过json键的单引号



当json在nodejs中使用时,我看到了一个非常奇怪的问题,它跳过了修订键中的单引号。我想把这个json作为输入传递给节点请求模块,因为"review"键中缺少一个引号,所以它不能作为有效的json输入。有人能帮我如何保留它,以便我可以使用它吗?我试过多次,但都没能纠正。

我试了什么?

console.log(jsondata)

jsondata = {
'splits': {
'os-name': 'ubuntu',
'platform-version': 'os',
'traffic-percent': 100,
'revision': 'master'
}
}

预期:-

{ splits:
{ 'os-name': 'ubuntu',
'platform-version': 'os',
'traffic-percent': 100,
'revision': 'master' 
} 
}

但在实际输出中,修订密钥中缺少单个报价:-

{ splits:
{ 'os-name': 'ubuntu',
'platform-version': 'os',
'traffic-percent': 100,
revision: 'master' 
} 
}

运行2:-尝试下面的代码这也产生了相同的东西。

data = JSON.stringify(jsondata)
result = JSON.parse(data)
console.log(result)   

运行3:-使用另一种方式来实现

jsondata = {}
temp = {} 
splits = []
temp['revision'] = 'master',
temp['os-name'] = 'ubuntu'
temp['platform-version'] = 'os'
temp['traffic-percent'] = 100
splits.push(temp)
jsondata['splits'] = splits
console.log(jsondata)

运行4:尝试将单引号替换为双引号

运行5:更改修订行的顺序

这就是应该发生的事情。只有当对象键不是有效的JavaScript标识符时,才会保留引号。在您的示例中,"拆分">&"愿景">他们的名字中没有破折号,所以他们是唯一去掉引号的人。

使用此对象时不应该收到任何错误——如果收到,请更新此帖子,提及场景和错误。

您应该注意,JSONJavaScript不是一回事。

JSON是一种所有键和值都用双引号("key"one_answers"value")包围的格式。JSON字符串由JSON.stringify生成,并且是JSON.parse所必需的。

JavaScript对象的语法与JSON文件格式非常相似,但更灵活——值可以用双引号单引号包围,键可以完全没有引号,只要它们是有效的JavaScript标识符。如果键包含空格、短划线或其他无效字符,则它们需要用单引号或双引号括起来。

如果您需要您的字符串是有效的JSON,请使用JSON.stringify生成它。如果它只是有效的JavaScript是可以的,那么它已经很好了——引号是否在那里并不重要。

如果出于某种原因,您需要一些想象中的第三个选项(也许您正在与API交互,其中有人编写了自己的自定义字符串分析器,他们要求所有键都用单引号括起来?)您可能需要编写自己的小字符串生成器。

最新更新