类型错误:function,json转换字典时报错

# -*- conding:utf-8 -*-

import requests,re,json,time
from requests import ReadTimeout

Ding_url = 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx'
Ding_headers = {
    "Content-Type": "application/json ;charset=utf-8 "
}
url = 'http://www.123.com.cn/'
req = requests.get(url).text
url_list = re.findall('href="(.*?)"',req,re.S)
urls = ['http://www.123.com.cn/']
for ul in url_list:
    if ul not in urls:
        urls.append(ul)

def status():

    for i in urls:
        if 'show' in i:
            try:
                html_status = requests.head(url = i , timeout=30)
                status_codes = html_status.status_code
                content_print = {str(status_codes):str(i)}
                # j = json.dumps(content_print) #TypeError: Object of type 'function' is not JSON serializable  
                time.sleep(1)
            except:
                status()
    return status_codes,status

def datas(status):
    datass = {"msgtype": "text", "text": {"content": status}, "at": {"atMobiles": [], "isAtAll": False}}
    String_textMsg = json.dumps(datass)
    req = requests.post(Ding_url, data=String_textMsg, headers=Ding_headers).text
    print('发送内容:', String_textMsg)
    return String_textMsg

def TorF(status_codes):#,title
    if status_codes == 200:
        datas(status)
    return datas(status)

num = 1
while num < 99999999999:
    datas(status)
    num += 1
    time.sleep(5)
    print('已执行第 ' + str(num) + ' 次')

代码如上,在json.dumps转换的时候,报错了,类型不对。我测了一下content_print = {str(status_codes):str(i)}是dict啊,而且换成list、元组都不行。在实际输出的时候能看到类型确实不对<function status at 0x00000000027C5840>,但是这个不知道咋改了...

阅读 3.5k
2 个回答
datass = {"msgtype": "text", "text": {"content": status}, "at": {"atMobiles": [], "isAtAll": False}}
String_textMsg = json.dumps(datass)

上面的status是函数名。是不是要调用一下啊 status()

TypeError: <function status at 0x7f2368c12578> is not JSON serializable

"status"是个函数,json.dumps打印不出来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题