Используйте object_hook
для определения пользовательской функции и выполнения операций:
import json
def keystoint(x):
return {int(k): v for k, v in x.items()}
j = json.dumps({1: [2.5, 2.5, 2.5], 2: [3, 3, 3, 3]})
# {"1": [2.5, 2.5, 2.5], "2": [3, 3, 3, 3]}
print(json.loads(j, object_hook=keystoint))
# {1: [2.5, 2.5, 2.5], 2: [3, 3, 3, 3]}
Из документов :
object_hook
- необязательная функция, которая вызывается с
результат любого объекта, буквально декодированный (dict). Возвращаемое значение
из object_hook
будет использоваться вместо dict.
Или вы также можете использовать
object_pairs_hook
, который позволяет перебирать пары и сохранять вызов
.items()
(Спасибо @chepner):
import json
def keystoint(x):
return {int(k): v for k, v in x}
j = json.dumps({1: [2.5, 2.5, 2.5], 2: [3, 3, 3, 3]})
# {"1": [2.5, 2.5, 2.5], "2": [3, 3, 3, 3]}
print(json.loads(j, object_pairs_hook=keystoint))
# {1: [2.5, 2.5, 2.5], 2: [3, 3, 3, 3]}
Из документов:
object_pairs_hook
- это дополнительная функция, которая будет вызываться с
результат любого литерала объекта, раскодированного упорядоченным списком пар.
Возвращаемое значение object_pairs_hook
будет использоваться вместо
ДИКТ.