如何使用python格式化/更新json中的无效数据

时间:2018-04-19 05:26:31

标签: json python-2.7

我的函数以json格式返回'jdata'以下,这是无效的。 我在“collection_id”中发现它的值无效: 如何将“collection_id”的值设置为“”或0,以便我可以解析下面的json。

jdata = 
{
    "status": {
        "state1": "retrying",
        "state2": "poll",

    },
    "conn_info": {
        "version": "0.0",
        "protocol_config": {
            "check_conp": false,
            "max_tunnel_i": 0,
            "collection_id": ,
            "descriptor": 0,
            "signature_key": "",
            "protocol_switching_policy": "udp_only",
            "udp_signaling_config": {
                "polling_t": 0,
                "polling_de": 0,
                "retry_gr": 0,
                "rwindow": 0,
                "status_ra": 0,
                "ud": 0,
                "server": "round_robin",
                "server": []
            }
        }

我使用了以下代码:

import json
def test_statusinfo():
    s = jdata

    try:
        decodedinfo = json.loads(s)
        for x in decodedinfo:
            if x == "conn_info":
                return decodedinfo[x]

    except(ValueError, KeyError, TypeError):
        LOGGER.info("JSON format error")

Error : JSON format error

1 个答案:

答案 0 :(得分:0)

使用replace命令验证数据,现在我可以解析它。 在try block之前添加了以下代码:

if s.endswith('"collection_id": '):
    s= s.replace('"collection_id": ','"collection_id": 0')