账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    类型错误:function,json转换字典时报错
    47
    0
    # -*- 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>,但是这个不知道咋改了...

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 这个错误通常是因为你正在尝试将一个JavaScript对象转换为JSON格式。JavaScript对象和JSON数据格式不兼容,所以你将无法将一个JavaScript对象转换为JSON。

      在JavaScript中,你可以使用JSON.parse()函数将一个字符串或JSON对象转换为JavaScript对象。但是,你不能直接将一个JavaScript对象转换为JSON格式,因为JSON数据格式只支持字符串、数字和布尔值。

      例如,以下代码会抛出一个TypeError:

      javascript let obj = {name: 'John', age: 30, isMale: true}; let json = JSON.stringify(obj);

      这将会抛出一个TypeError,因为JavaScript对象不能被转换为JSON格式。

      如果你想将一个JavaScript对象转换为JSON格式,你需要先将JavaScript对象转换为JSON字符串。你可以使用JSON.stringify()函数来实现这一点。

      javascript let obj = {name: 'John', age: 30, isMale: true}; let json = JSON.stringify(obj, null, 4);

      在这个例子中,null前缀表示在输出字符串时保留null值,4表示每个字段应被输出4次。这个代码将输出:

      json { "name": "John", "age": 30, "isMale": true }

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部