http输出中的json中的键的缺失值的默认值

时间:2019-05-10 05:29:33

标签: python json

我遇到这样的情况,我得到的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会为键的缺失值添加默认值。

1 个答案:

答案 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”值,或者在出现其他错误消息时中断。