我遇到这样的情况,我得到的HTTP响应缺少密钥值。
import requests
http = requests.get(url, verify=False, auth=HTTPBasicAuth(self.username, self.password),
timeout=self.timeout, headers=headers)
http.text 提供输出,但 http.json 不提供任何输出。我知道此问题是由于json格式无效造成的。
'{"PLMNID":[
{
"mNc":,
"id":3,
"mcc":
},
{
"mNc":,
"id":4,
"mcc":
},
{
"mNc":,
"id":5,
"mcc":
},
{
"mNc":,
"id":6,
"mcc":
}}'
目前我重新运行http.json。我没有看到任何响应,也没有错误。 现在,我计划返回http.text输出,并为丢失的键添加一些默认值(可能是”或null)并继续。
我们是否有任何python json api会为键的缺失值添加默认值。
答案 0 :(得分:1)
import json
text = '{"sa": 1, "df":[{"vc":1,"mn":2},{"vc":1,"mn":}]}'
len_text = len(text)
j = 0
js = None
while j <= len_text:
try:
js = json.loads(text)
except json.JSONDecodeError as mn :
if mn.msg == "Expecting value":
text1 = list(text)
text1.insert(mn.pos, 'null')
text = "".join(text1)
else:
print("Got other error than Expecting value at pos:{0} with error:{1}".format(mn.pos, mn.msg))
break
j += 1
print(js)
此代码正在检查JSON解码错误,当出现“期望值”消息时,它将在JSON文本的索引处填充“空”值。重复此操作,直到它填满“ null”值,或者在出现其他错误消息时中断。