python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决

在学习python语言中用json库解析网络数据时,我遇到了两个编译错误:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:json.decoder.JSONDecodeError: Expecting value:。费了一些时间才找到原因,在此记录总结,希望能对学习python的同学有所帮助。
我运行的程序初始如下:

import json

data='''
{
'name' : 'A',
'phone': { 'type' : 'intl', 'number' : +1 23456 },
'email' : {'hide' : 'yes'}
}'''

info=json.loads(data)
print("Name:",info["name"])
print("EmailAttri:",info["email"]["hide"])

运行后报错,显示错误为json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:,原来数据格式里string类型的数据要用双引号‘‘ ‘‘,而不能用单引号‘ ‘。
将里面的单引号一一改过来之后,编译器仍然报错:json.decoder.JSONDecodeError: Expecting value:。我以为是代码格式(缩进)的问题,反复修改后还是报错,这让我百思不得其解,在网上搜索了这一错误的解决方案,也没有找到合适的答案。最后,与老师的源代码逐一仔细比对,发现问题竟然出在"number"这个元素这里,我当时把它的值当作数字,其实在这里+1 23456是string类型,因此需要加上双引号。修改后程序如下,正确运行。

import json

data='''
{
"name" : "A",
"phone": { "type" : "intl", "number" : "+1 23456" },
"email" : {"hide" : "yes"}
}'''

info=json.loads(data)
print("Name:",info["name"])
print("EmailAttri:",info["email"]["hide"])

这个问题还有另一种解决方式,就是将+1 23456改写成123456,int类型,这样就不需要加双引号。
我在网上搜索该问题时,发现有很多人也遇到了json.decoder.JSONDecodeError: Expecting value:这一错误,从我解决的过程中,我认为原因主要是数据的格式不正确。因此,如果是从网上爬取的数据,需要先检查一下数据格式设置是否符合json的要求,这样程序编译才能顺利通过。

原文地址:https://www.cnblogs.com/codestack123/p/10789640.html

时间: 2024-11-08 22:52:18

python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决的相关文章

python:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes问题解决

有如下一个文件,内容如下 { "test1": "/root/test/test1.template", "test2": "/root/test/test2.template", "test3": "/root/test/test3.template", "test4": "/root/test/test4.template", "te

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

上篇博客提到了爬取动态数据,但是在构造request_url时,其中的url我用的浏览器的网址,但是经过运行发现,有时可以运行成功,有时 request_url = "http://tool.manmanbuy.com/history.aspx?DA=1&action=gethistory&url={0}&bjid=&spbh=&cxid=&zkid=&w=951&token={1}".format(url, token)

json.loads 报错 json.decoder.JSONDecodeError

json.loads报json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes 出现这个错误其实只需要知道一点就能解决,那就是这个数据结构不符合json标准格式  """ 1. 标准JSON的合法符号:{  }  "  : , [  ] ----> 即:左大括号,右大括号,双引号,冒号,逗号,左中括号 和 右中括号 2. JSON布尔:必须小写的true和fa

windows下 python中报错ImportError: No module named 'requests'

原因没有安装requests模块, 可以切换到python的安装目录找到 script文件夹 example: 进入cmd窗口切换到上面的目录直接运营下面两个命令中的一个 1. > Path\pip install requests 2. > Path\easy_install.exe requests 详细参考:https://stackoverflow.com/questions/17309288/importerror-no-module-named-requests ---------

python报错:SyntaxError: Non-ASCII character '\xe5'的解决方法

最近在学习机器学习,上面的代码都是一些python代码,对于python只是会一些基础性的东西,刚才就遇到了一个比较low的问题,但是还是记录一下吧. 在python代码中出现了中文,但是我又把# -*- coding: utf-8 -*-这句话放到了第三行,所以导致出现了,如下的错误: SyntaxError: Non-ASCII character '\xe5' 1. 解决方法也和简单就是把编码的那句话放在第一行: # -*- coding: utf-8 -*- #!/usr/bin/pyt

AIDL使用中报错找不到自定义数据类型的解决办法

在研究Android多进程编程的时候,照书敲了一个AIDL的例子.其中,用Android Studio自动生成了AIDL文件,会放进aidl文件夹,其中使用到了一个自定义数据类型,于是在aidl文件夹下会有3个文件,如下图所示. IBookManager中定义服务器提供的接口,其中用到了自定义数据类型Book,除了要用java实现Book类(必须implement parcelable)外,还要添加同名的Book.aidl文件,里面有两句代码. package *.aidl;parcelable

用sublime Text2 运行python报错问题 Decode error - output not utf-8_ 解决办法

python遇坑记录-json.loads() :JSONDecodeError: Invalid \escape

环境:python3.6 json文件: { "src_dir" : "C:\\Users\\admin\\Desktop\\99\\apkobb", "bucket" : "tocggspace", "key_prefix" : "ggspace/self/" } py文件: import sys, json configfile = sys.argv[1] config = json

python基础:json.loads(str)出现错误总结

1 >>> import json 2 >>> test="{'data':'123'}" 3 >>> result=json.loads(test) 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 File "d:\Anaconda3\lib\json\__init__.p