首页 > 解决方案 > 使用 json 解析空字符串

问题描述

我想知道是否有一种方法可以使用json.loads以自动将空字符串转换为其他内容,例如None.

例如,给定:

data = json.loads('{"foo":"5", "bar":""}')

我想拥有:

data = {"foo":"5", "bar":None}

代替:

data = {"foo":"5", "bar":""}

标签: pythonjsonstringpython-3.xdictionary

解决方案


您可以使用字典理解:

data = json.loads('{"foo":"5", "bar":""}')
res = {k: v if v != '' else None for k, v in data.items()}

{'foo': '5', 'bar': None}

这只会处理嵌套字典的第一级。您可以使用递归函数来处理更通用的嵌套字典情况:

def updater(d, inval, outval):
    for k, v in d.items():
        if isinstance(v, dict):
            updater(d[k], inval, outval)
        else:
            if v == '':
                d[k] = None
    return d

data = json.loads('{"foo":"5", "bar":"", "nested": {"test": "", "test2": "5"}}')

res = updater(data, '', None)

{'foo': '5', 'bar': None,
 'nested': {'test': None, 'test2': '5'}}

推荐阅读