2013-11-07 3 views
4

У меня есть такой кусок кода Python:Почему одиночные кавычки (') и двойные кавычки (") получить разные результаты в модуле JSon питона

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) 

В питоне, single_quote и double_quote не делают никаких технических различий, не так ли? Тогда почему single_quote работы и double_quote нет?

ответ

12

это потому, что только первый пример является действительным JSON. данные JSON имеют ключи и значения, обведенные "..." и не '...'.

Существуют и другие «правила», которых вы не можете ожидать. На этой странице википедии есть отличный список here. Например, булевы должны быть строчными (true и false), а не True и False. JSON! = Python.

4

Это не внешние кавычки, которые имеют значение, это буквальные кавычки в строку JSON (должен быть ")

т.е.. Это нормально (но громоздкая)

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

Вы можете также использовать тройные кавычки

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

выбор, цитат есть, так что вы вряд ли когда-либо нужно использовать уродливые/громоздкие версии

1

JSON является свободным от языка форматом для обмена данными. Хотя single_quote и double_quote не имеют значения в Python, они отличаются в JSON, потому что объект JSON будет обрабатываться и другими языками.

Смежные вопросы