1
1
1esman2021-05-14 21:49:04
Python
1esman, 2021-05-14 21:49:04

What to do with json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)?

there is a code:

import json
import time
import sqlite3
import datetime
import requests

def get_payment_link(number, sum, comment=""):
  link = "https://qiwi.com/payment/form/99?extra%5B%27account%27%5D={}&amountInteger={}&amountFraction=0&extra%5B%27comment%27%5D={}&currency=643&blocked[0]=sum&blocked[2]=account"
  link = link.format(number, sum, comment)
  return link


def get_last_pay(qiwi_number, qiwi_token):
  url = "https://edge.qiwi.com/payment-history/v2/persons/{0}/payments".format(qiwi_number)
  headers = {"Accept": "application/json", "Content-Type": "application/json", "Authorization": "Bearer " + qiwi_token}
  req = requests.get(url, params={"rows": 1, "operation": "IN"}, headers=headers)
  
  req = req.json()
  js = json.dumps(req)
  js = json.loads(js)
  description = js["data"][0]["comment"]
  sum = js["data"][0]["sum"]["amount"]

  return {"sum": sum, "description": description}






class DataBase:
  def __init__(self, path="DB.db"):
    self.con = sqlite3.connect(path)
    self.cursor = self.con.cursor()

  def close(self):
    self.con.commit()
    self.con.close()

  def search_user(self, chat_id):
    """
    Поиск юзера по id
    В случае обнаруения возращает True(bool)
    Иначале False(bool)
    """
    sql = "SELECT id, chat_id FROM Users WHERE chat_id = {}".format(chat_id)
    self.cursor.execute(sql)

    if self.cursor.fetchone() != None:
      resp = True
    else:
      resp = False

    return resp

  def new_user(self, chat_id, referer=None):
    """
    Запись нового юзера
    """
    self.cursor.execute("SELECT * FROM Users")
    id = len(self.cursor.fetchall()) + 1

    sql = "INSERT INTO Users VALUES (?, ?, ?, ?, ?)"
    values = (id, chat_id, 0, round(time.time()), referer)
    self.cursor.execute(sql, values)


  def pay(self, chat_id, sum):
    sql = "UPDATE Users SET sum_pay = sum_pay + {} WHERE chat_id = {}".format(sum, chat_id)
    self.cursor.execute(sql)


  def get_all_users(self):
    users = []

    sql = "SELECT * FROM Users"
    self.cursor.execute(sql)
    for id, chat_id, sum_pay, reg_time, referer in self.cursor.fetchall():
      reg_time = datetime.datetime.fromtimestamp(reg_time)

      mes = "ID в боте: {}\nchat_id: {}\nСумма пополнений: {}\nДата регистрации: {}\nРеферер: {}"
      mes = mes.format(id, chat_id, sum_pay, reg_time, referer)
      
      users.append(mes)


    return users


After execution I get an error: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) in the line req = req.json() . What to do?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
soremix, 2021-05-14
@1esman

Returned not json. Print the query result and see what's there
print(req.text)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question