Ответы пользователя по тегу JSON
  • Python + json, почему не серилизуется массив?

    t = Tiket.objects.filter(user=request.user, sost=True)

    это не список(list) объектов, это ленивый QuerySet, который при попытке итерации по оному будет вычислен(и в ряде других случаев), и на каждом шаге будет возвращать экземпляры модели, и этот объект не может быть преобразован в json(стандартными средствами).
    Пр этом экземпляры модели, никоим образом сами по себе в json не преобразуются, нет в json никаких моделей, если хотите получить список json объектов, то подавать надо список словарей.

    t = Tiket.objects.filter(user=request.user, sost=True).values()
       
        return JsonResponse({'tiketsS': list(t)})

    При этом нужно быть уверенным, что все поля которые скармливаем JsonResponse джанга может преобразовать в json (вашу модель должен суметь), только обратите внимание на дату, она у вас станет строкой.

    З.Ы. если хотите ответить используйте "комментировать"
    Ответ написан
  • Почему при вынесении из цикла переменной, которая не изменяется вываливается ошибка?

    import urllib, json
    
    url_members = 'https://api.vk.com/method/groups.getMembers?group_id=67824212'
    response_url_members = urllib.urlopen(url_members)
    data = json.loads(response_url_members.read())
    members = data['response']['users']
    print(members)

    в первом варианте у вас три раза запрашивается урл
    во втором урл запрашивается один раз, первый вызов read забирает все данные, и на втором уже убудет пустая строка, которая не является валидным json, отсюда ошибка.
    При этом у вас на каждой итерации цикла вызывается преобразование одних и техже данных в json.
    помимо этого сам цикл вообще бесполезный поскольку в переменную members, будет на каждой итерации записываться значение и затираться следующим, будет проще обратится по индексу сразу. members = data['response']['users'][2]
    Ответ написан
    2 комментария