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_quotedouble_quote技術的な違いはありませんね。では、なぜsingle_quote機能し、double_quote機能しないのでしょうか。

4

3 に答える 3

13

これは、最初の例だけが有効な JSON であるためです。JSON データには、キーと値が で囲まれ"..."、 ではありません'...'

あなたが期待していないかもしれない他の「ルール」があります。このウィキペディアのページにすばらしいリストがあります。たとえば、ブール値は小文字 ( trueand false) であり、 and ではありませTrueFalse。JSON != パイソン。

于 2013-11-07T03:18:11.150 に答える
4

重要なのは外部の引用符ではなく、JSON 文字列内のリテラルの"引用符です ( である必要があります)

すなわち。これでOK(面倒だけど)

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

三重引用符を使用することもできます

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

引用符の選択肢があるので、醜い/面倒なバージョンを使用する必要はほとんどありません

于 2013-11-07T03:20:40.040 に答える
1

JSONデータ交換用の言語フリー形式です。single_quoteとは違いはありdouble_quoteませんが、オブジェクトが他の言語でも処理されるため、Python違いがあります。JSONJSON

于 2013-11-07T03:44:10.177 に答える