首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >json.decoder.JSONDecodeError:需要值:循环时的第1行第1列(char 0)

json.decoder.JSONDecodeError:需要值:循环时的第1行第1列(char 0)
EN

Stack Overflow用户
提问于 2018-06-03 03:50:04
回答 1查看 907关注 0票数 0
import requests
from bs4 import BeautifulSoup as bs4
from threading import Thread
import json
import time
from datetime import datetime
import _thread

webhook = ("https://hooks.slack.com/services/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")

s = requests.session()

payload={"channel": "#bot-monitor", "username": "Astro-bot", "text": "<https://www.astro-bot.io/astro/buyme-asdf-j4wrj-ypzkf|Astro Bot Restock! Click to Purchase>", "icon_emoji": ":rocket:"}


response = s.get('https://www.astro-bot.io/api/commerce/inventory/stock/?crumb=BQXy6KNmMGWENWE3YWQzMTc3MDU5NzE1ODdkNDNiM2RmZTEyNjg4&itemId=5b0dc9172b6a283905dabe08')
data = json.loads(response.text)
stock = data['results'][0]['qtyInStock']

def checkstock():
    response = s.get('https://www.astro-bot.io/api/commerce/inventory/stock/?crumb=BQXy6KNmMGWENWE3YWQzMTc3MDU5NzE1ODdkNDNiM2RmZTEyNjg4&itemId=5b0dc9172b6a283905dabe08')
    data = json.loads(response.text)
    stock = data['results'][0]['qtyInStock']
    print(stock)


def post():
    global stock
    if stock in [0]:
        print("Out of stock! LOL!")
        time.sleep(3)
        checkstock()

    else:
        if stock > (0):
        s.post(webhook, json=payload)


def main():
    checkstock()
    post()



if __name__ == '__main__':
    main()

代码运行一次,然后当它再次检查股票时,我得到了:

从无提升JSONDecodeError(“期望值”,s,err.value) json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)。

请提个建议。

EN

回答 1

Stack Overflow用户

发布于 2018-06-03 05:28:08

我是出于礼貌,但代码片段是这样一个反模式的集合(全局变量、重复代码、函数外的代码、糟糕的流控制),因此很难激发进行调试的动力。越早、越深入地重构代码,对您的项目越有利。

话虽如此,我认为更短的代码可以完成所请求的任务,而且它没有JSONDecodeError

import requests
import time

ASTRO_URL = 'https://www.astro-bot.io/api/commerce/inventory/stock/?crumb=BQXy6KNmMGWENWE3YWQzMTc3MDU5NzE1ODdkNDNiM2RmZTEyNjg4&itemId=5b0dc9172b6a283905dabe08'
WEBHOOK_URL = 'https://hooks.slack.com/services/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'

def qty_in_stock(url):
    data = requests.get(url).json()
    return data['results'][0]['qtyInStock']    

def do_something():
    pass

def main():
    stock = qty_in_stock(ASTRO_URL)
    if stock == 0:
        print('out ot stock!')
        time.sleep(3)
        stock = qty_in_stock(ASTRO_URL)
        print(stock)
    else:
        do_something()

if __name__ == '__main__':
    main()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50660600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档