Json.loads не работает с JSONField

Использую Базу данных MySql

Модель БД

class all_product_db(models.Model):
   id = models.AutoField(primary_key=True)
   mod = models.JSONField(encoder=None, blank=True, null=True)

чтобы получить данные поля JSONField использую следующую функцию:

all_product_db.objects.get(id=12).mod

ответ получаю почему то с одинарными ковычками:

[{'name': 'Выбор пиццы', 'variation_id': [1, 2]}]

в БД записано поле с двойными ковычками формата

[{"name":"Выбор пиццы","variation_id":[1,2]}]

Вопрос: Почему выдает поле с одинарными ковычками? и я не могу воспользоваться методом json.loads так как при попытки выдает ошибку:

TypeError(f'the JSON object must be str, bytes or bytearray, ' TypeError: the JSON object must be str, bytes or bytearray, not list

В Python апострофы (') и кавычки (") эквивалентны. Поэтому и меняет. json тут не при чём. Например,

X=[{"name":"Выбор пиццы","variation_id":[1,2]}]
print(X)
#даст результат: [{'name': 'Выбор пиццы', 'variation_id': [1, 2]}]

Необходимо сначала сериализовать данные с помощью метода json.dumps:

json = json.loads(json.dumps('[{"name":"Выбор пиццы","variation_id":[1,2]}]'))
Вернуться на верх