Согласно спецификации , None
не является допустимым ключом.Это будет равносильно выражению объекта JSON, которое выглядит как
{ ..., null: ..., ... }
, что недопустимо (т. Е. Не может быть сгенерировано с использованием синтаксической диаграммы.)
Возможно, модуль JSON должен иметьвыдает исключение при сериализации вместо тихой генерации строкового представления значения.
EDIT Только что увидел, что поведение модуля задокументировано (несколько неявно):
Если для skipkeys задано значение True (по умолчанию: False), то вместо этих ключей будут пропущены ключевые слова, которые не относятся к базовому типу (str, unicode, int, long, float, bool, None)повышение TypeError.
, поэтому кажется, что это поведение является преднамеренным (я все еще нахожу это сомнительным, учитывая текущую спецификацию JSON).