已解决json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这篇具有很好参考价值的文章主要介绍了已解决json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)









报错代码



粉丝群里面的一个粉丝在用Python解析JSON文件,但是发生了报错(跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug不会解决的小伙伴),报错信息和代码如下:


json.decoder.jsondecodeerror: expecting value: line 1 column 1 (char 0),json,python,开发语言,爬虫,requests



报错信息截图如下(使用json模块经常遇见的bug):


json.decoder.jsondecodeerror: expecting value: line 1 column 1 (char 0),json,python,开发语言,爬虫,requests




报错翻译



报错信息翻译如下

从None引发JSONDecodeError(“期望值”,s,err.value)
json.decoder。JSONDecodeError:应为值:第1行第1列(字符0)



报错原因



报错原因

loads() 传的是python的dict字典类型,而我们刚刚传递的类型不符合,所以报错了。下面我们来讲解json模块常用的四个函数:

  • json.load():将一个存储在文件中的json对象(str)转化为相对应的python对象
  • json.loads():将一个json对象(str)转化为相对应的python对象
  • json.dump():将python的对象转化为对应的json对象(str),并存放在文件中
  • json.dumps(): 将python的对象转化为对应的json对象(str)

json.load()载入json文件时出现了错误,问题一般是由于json文件损坏或内容缺失,报错的意思是,你获取的数据json数据不是字典形式。






解决方法



(1)如果是爬虫报错的话,检查爬虫是否拿到字典形式json数据(print打印一下),才能通过json.loads 解析成python的字典形式

  • 第一步:首先得确定网页返回的是否是JSON数据,开发者工具 》网络 》响应头中查看响应类型:


    json.decoder.jsondecodeerror: expecting value: line 1 column 1 (char 0),json,python,开发语言,爬虫,requests

  • 第二步: res.content.decode("utf-8") 查看返回数据效果

    json.decoder.jsondecodeerror: expecting value: line 1 column 1 (char 0),json,python,开发语言,爬虫,requests
    可以看到上面红框部分返回不是完整的json数据,,反而多了一部分内容。说明不能用res.json()去打印

  • 第三步:竟然不是一个完整的JSON数据,那我们是否可以那多余的那部分给替换掉为空就好了?

    data = res.content.decode("utf-8")
    # 1. 利用正则把开头多余的替换为空字符串
    data = re.sub("jQuery180008241254755365413_1671790451896\(",'',data)
    # 2. 正则把最后那个)给替换为空字符串
    data = re.sub("\)$", '', data)
    print(data)
    print(type(data)) # 此时打印data的类型还是字符串:<class 'str'>
    # 3. 利用eval将类型转换为字典
    data = eval(data)
    print(data)
    print(type(data)) # 此时打印data的类型为:<class 'dict'>
    

(2)如果是读取json文件出现这个错误:

  • 解决方法1:注意是否需要改为 encoding=‘gbk’

    with open('xxx.json','r', encoding='utf-8') as f: 
    	#若文件不为空但json_file读出来为空,注意编码格式是否匹配
    	json_file = json.load(f) 
    
  • 解决方法2::

    with open('xxx.json','r', encoding='utf-8') as f: 
    	json_file = json.loads(f.read())
    

以上是此问题报错原因的解决方法,欢迎评论区留言讨论是否能解决,如果有用欢迎点赞收藏文章谢谢支持,博主才有动力持续记录遇到的问题!!!

千人全栈VIP答疑群联系博主帮忙解决报错

由于博主时间精力有限,每天私信人数太多,没办法每个粉丝都及时回复,所以优先回复VIP粉丝,可以通过订阅限时9.9付费专栏《100天精通Python从入门到就业》进入千人全栈VIP答疑群,获得优先解答机会(代码指导、远程服务),白嫖80G学习资料大礼包,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会),此专栏文章是专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试!

  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等

  • 注意:如果希望得到及时回复,和大佬们交流学习,订阅专栏后私信博主进千人VIP答疑群json.decoder.jsondecodeerror: expecting value: line 1 column 1 (char 0),json,python,开发语言,爬虫,requests
    json.decoder.jsondecodeerror: expecting value: line 1 column 1 (char 0),json,python,开发语言,爬虫,requests

免费资料获取,更多粉丝福利,关注下方公众号获取

json.decoder.jsondecodeerror: expecting value: line 1 column 1 (char 0),json,python,开发语言,爬虫,requests文章来源地址https://www.toymoban.com/news/detail-815441.html

到了这里,关于已解决json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • json.decoder.JSONDecodeError: Unterminated string starting at: line 1 ... - Stable Diffusion报错解决方案

    json.decoder.JSONDecodeError: Unterminated string starting at: line 1 ... - Stable Diffusion报错解决方案

    遇到这种问题基本都是数据文件的问题,导致json解析错误,所以需要找到这个文件,然后修复它。 从报错可以看出,是在tokenization_clip.py文件中的__init__方法加载词汇文件时出现的JSONDecodeError。 然后找到这段代码,最后确定这里有错误: 一开始在项目中总是找不到这个voca

    2024年02月03日
    浏览(29)
  • 已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None

    已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None

    已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 粉丝群一个小伙伴想用Python读取json报错,但是还是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助

    2024年02月02日
    浏览(9)
  • Fastjson JSONException: illegal identifier : \pos 2, line 1, column 3问题解决

    Fastjson JSONException: illegal identifier : \pos 2, line 1, column 3问题解决

    com.alibaba.fastjson.JSONException: illegal identifier : pos 2, line 1, column 3 问题分析: 1、使用了JSONArray.parseArray(String text, ClassT clazz)方法时,text字符串内部存在转义字符,导致反序列化报错。 解决办法:先去以下网站将字符串去转义。   JSON在线 | JSON解析格式化—SO JSON在线工具 SO JSO

    2023年04月19日
    浏览(8)
  • hive建表报错 FAILED: ParseException line 3:22 mismatched input ‘<EOF>‘ expecting StringLiteral near ‘by‘

    hive建表报错 FAILED: ParseException line 3:22 mismatched input ‘<EOF>‘ expecting StringLiteral near ‘by‘

    hive建表报错 FAILED: ParseException line 3:22 mismatched input ‘’ expecting StringLiteral near ‘by’ in table row format’s field separator 建表语句 终端报错 更改建表语句中 为 由于笔者的hdfs文件中不同字段是通过分号分隔, 因此 但对于特殊字符,为避免产生歧义,hive 语法规定需通过asc码值对

    2024年02月12日
    浏览(9)
  • PHP解析带BOM头的JSON数据,对接他人接口的时候,使用json_decode(),返回null的问题与解决方法

    PHP解析带BOM头的JSON数据,对接他人接口的时候,使用json_decode(),返回null的问题与解决方法

    在php开发中会遇到和他人对接接口,对方使用json传输数据,使用json_decode()函数却无法将json数据转换为数组。 先看封装的代码 这种对接post接口的封装方法一般是没有问题的,但是我们打印$res的时候,会发现只会返回NULL。而打印$response的时候,是可以返回json字符串的。我们

    2024年02月06日
    浏览(7)
  • Neo4j报错:py2neo.errors.ProtocolError: Cannot decode response content as JSON 解决方案

    Neo4j报错:py2neo.errors.ProtocolError: Cannot decode response content as JSON 解决方案

    环境: neo4j-5.1.0、py2neo-2021.2.3、Neo4j Desktop-1.5.2、python3.9.13 1、创建neo4j链接,对数据库进行增删改的时候报错。 报错代码: 奇怪的是,同样的代码、数据,用在python3.8.3的环境中没有报错,所以首先查看两个版本python的区别,发现json的__init__中有一些小区别,关于json解析的,

    2024年02月12日
    浏览(14)
  • error parsing deployment-nginx.yml: error converting YAML to JSON: yaml: line 19 问题解决

    error parsing deployment-nginx.yml: error converting YAML to JSON: yaml: line 19 问题解决

    使用yml文件创建deployment类型的pod时,执行命令报错如下: error: error parsing deployment-nginx.yml: error converting YAML to JSON: yaml: line 19: did not find expected key yml文件如下: 报错说19行有问题 应该是缩进的问题,于是修改了最后几行的缩进 再次创建 修改后的yml文件 总结: 属于yml文件格

    2024年02月10日
    浏览(9)
  • MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00‘ for column

    使用navicat导入数据时报错: MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00’ for column 这是因为当前的MySQL不支持datetime为0的情况。 MySQL报incorrect datetime value ‘0000-00-00 00:00:00’ for column错误原因,是由于在MySQL5.7版本以上,默认设置SQL_Mode模式,在模式里有NO_ZERO_DATE,NO_ZERO_IN_

    2024年02月12日
    浏览(9)
  • json_decode函数详解

    json_decode是php5.2.0之后新增的一个PHP内置函数,其作用是对JSON格式的字符串进行编码.那么这个函数该如何使用呢? json_decode的语法规则: json_decode接受一个JSON格式的字符串并且把它转换为PHP变量 ,当该参数$assoc为TRUE时,将返回array,否则返回object。 JSON 格式的字符串 $json = ‘

    2024年02月10日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包