Как решить JSONDecodeError при использовании цикла WHILE - PullRequest
0 голосов
/ 26 июня 2018
while url:
      post = session.post(login, data=payload)
      r = session.get(url)
      parsed = json.loads(r.text)
      # Retrieve json product data
      if parsed['links']['next'] is not 'null':
            url = 'https://testshop.example.com/admin/products' + str(parsed['links']['next'])
            time.sleep(2)
            for product in parsed['products']:
                parsed_result = product['id'] 
      else: 
           print('stop now!')
           break

ТАК Я использую приведенный выше код для извлечения и печати всех данных json в моем терминале. Все идет хорошо, пока я не получу следующий код ошибки в конце:

    raise JSONDecodeError("Expecting value", s, err.value) from None

JSONDecodeError: Expecting value 

Кто-нибудь знает, в чем причина этого и как я могу это исправить?

Это мой формат JSON, если это имеет значение:

products: [
{
article_code: "123",
barcode: "456",
brand_id: 2600822,
created_at: "2018-05-31T15:15:34+02:00",
data01: "",
data02: "",
data03: "",
delivery_date_id: null,
has_custom_fields: false,
has_discounts: false,
has_matrix: false,
hits: 0,
hs_code: null,
id: 72660113,
image_id: null,
is_visible: false,
price_excl: 33.0165,
price_incl: 39.95,
price_old_excl: 0,
price_old_incl: 0,
product_set_id: null,
product_type_id: null,
search_context: "123 456 789",
shop_id: 252449,
sku: "789",
supplier_id: 555236,
updated_at: "2018-05-31T15:15:34+02:00",
variants_count: 1,
visibility: "hidden",
weight: 0,
nl: {
content: "",
fulltitle: "Grid Lifter",
slug: "grid-lifter",
title: "Grid Lifter"
}
],

links: {
first: ".json",
last: ".json?page=70",
prev: null,
next: ".json?page=2",
count: 3497,
limit: 50,
pages: 70
}

Я использую это для разбивки на страницы.

Traceback:

Файл "", строка 1, в runfile ('loginlightspeedshop.py', wdir = 'C: /Users/Solaiman/.spyder-py3/SCRIPTS/Lightspeed scripts')

Файл "sitecustomize.py", строка 705, в runfile execfile (имя файла, пространство имен)

Файл "sitecustomize.py", строка 102, в execfile exec (compile (f.read (), filename, 'exec'), пространство имен)

Файл "C: /Users/Solaiman/.spyder-py3/SCRIPTS/Lightspeed scripts / loginshop.py", строка 33, в parsed = json.loads (r.text)

Файл "C: \ Users \ Solaiman \ Anaconda3 \ lib \ json__init __. Py", строка 354, в загрузках return _default_decoder.decode (s)

Файл "decoder.py", строка 339, в декодировании obj, end = self.raw_decode (s, idx = _w (s, 0) .end ())

Файл "decoder.py", строка 357, в raw_decode повысить JSONDecodeError («Ожидаемое значение», s, err.value) из None

JSONDecodeError: Ожидаемое значение

1 Ответ

0 голосов
/ 26 июня 2018

Вы, вероятно, получаете пустой / не json ответ здесь:

r = session.get(url)

Попробуйте распечатать r.text перед анализом, чтобы определить причину проблемы. Или используйте предложение try / исключением:

try:
    parsed = r.json()
except ValueError:
    print(r.text)
    break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...