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]}]'))