Python 如何处理json空值

Python 如何处理json空值,python,json,dictionary,Python,Json,Dictionary,我是Python的新手,我正在尝试打开一个json文件,如下所示: { "empty_char":"", "empty_number": , "char":"i'm a char", "number":0 } 假设这是test.json文件: 在尝试用python打开它时,我使用的是: import json with open('test.json') as f: data = json.load(f) 它会引发以下错误: Traceback (most rece

我是Python的新手,我正在尝试打开一个json文件,如下所示:

{
  "empty_char":"",
  "empty_number": ,
  "char":"i'm a char",
  "number":0
}
假设这是
test.json
文件:

在尝试用python打开它时,我使用的是:

import json

with open('test.json') as f:
    data = json.load(f)
它会引发以下错误:

Traceback (most recent call last):
  File "<input>", line 2, in <module>
  File "C:\ProgramData\Anaconda3\Lib\json\__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\ProgramData\Anaconda3\Lib\json\__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "C:\ProgramData\Anaconda3\Lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\ProgramData\Anaconda3\Lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 3 column 19 (char 39)
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
文件“C:\ProgramData\Anaconda3\Lib\json\\uuuuu init\uuuuuu.py”,第299行,已加载
parse_常量=parse_常量,object_pairs_hook=object_pairs_hook,**千瓦)
文件“C:\ProgramData\Anaconda3\Lib\json\\ uuuuu init\uuuuuu.py”,第354行,加载
返回\u默认\u解码器。解码
文件“C:\ProgramData\Anaconda3\Lib\json\decoder.py”,第339行,解码
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
原始解码中的文件“C:\ProgramData\Anaconda3\Lib\json\decoder.py”,第357行
从None引发JSONDecodeError(“预期值”,s,err.value)
json.decoder.JSONDecodeError:期望值:第3行第19列(字符39)
由于
“空\u号”:,


如果无法修改
.json
文件,如何处理此错误?

您可以使用更灵活的方法读取未作为
无提供的值

import yaml
from io import StringIO

mystr = StringIO("""{
  "empty_char":"",
  "empty_number": ,
  "char":"i'm a char",
  "number":0
}""")

# replace mystr with open('test.json', 'r')
with mystr as stream:
    res = yaml.load(stream)

print(res, type(res))

{'empty_char': '', 'empty_number': None, 'char': "i'm a char", 'number': 0}
<class 'dict'>
导入yaml
从io导入StringIO
mystr=StringIO(“”){
“空字符”:“,
“空_编号”:,
“char”:“我是char”,
“数字”:0
}""")
#将mystr替换为open('test.json','r')
使用mystr作为流:
res=yaml.荷载(流)
打印(分辨率,类型(分辨率))
{'empty_char':'''empty_number':无,'char':“我是一个char”,'number':0}

请注意,我们可以像读取文件一样读取字符串。

这不是有效的json…获取一个新的有效json文件,这是正确的,但在现实生活中有时会发生类似这样的奇怪事情。