4

我有这样一段python代码:

import json
single_quote = '{"key": "value"}'
double_quote = "{'key': 'value'}"
data = json.loads(single_quote) # get a dict: {'key': 'value'}
data = json.loads(double_quote) # get a ValueError: Expecting property name: line 1 column 2 (char 1)

在 python 中,single_quote并且double_quote没有技术差异,不是吗?那为什么single_quote有效而double_quote无效呢?

4

3 回答 3

13

这是因为只有第一个示例是有效的 JSON。"..."JSON 数据的键和值由and not包围'...'

还有其他你可能没想到的“规则”。这个维基百科页面上有一个很棒的列表。例如,布尔值应该是小写的 ( trueand false) 而不是Trueand False。JSON!= Python。

于 2013-11-07T03:18:11.150 回答
4

重要的不是外部引号,而是 JSON 字符串中的文字引号(必须是"

IE。这没关系(但很麻烦)

double_quote = "{\"key\": \"value\"}"

您也可以使用三引号

'''{"key": "value"}'''
"""{"key": "value"}"""

引号的选择就在那里,所以你几乎不需要使用丑陋/繁琐的版本

于 2013-11-07T03:20:40.040 回答
1

JSON is a language-free format for exchanging data. Although single_quote and double_quote make no difference in Python, they're different in JSON cause a JSON object will be processed by other languages as well.

于 2013-11-07T03:44:10.177 回答