如何使用python返回部分JSON响应?

时间:2014-02-12 08:40:58

标签: python json dictionary filter whitelist

我有一个json(或python字典),我想定义一个字段白名单。

{
    "firstname": "user",
    "last_name":"test",
    "roles": ["admin", "country"], 
    "languages":{"first":"english", "second":"french"}
}

指定名字,角色语言,首先输出:

{
    "firstname": "user",
    "roles": ["admin", "country"],
    "languages":{"first":"english"}
}

第一级很容易做到,但我怎样才能做到第二级,第三级......

2 个答案:

答案 0 :(得分:0)

也许你可以创建一个递归函数来检查每个字典元素的类型及其白名单成员资格。如果元素N的类型是字典,则再次调用函数递增某个级别计数器。

答案 1 :(得分:0)

如果您知道如何为“第一级”执行此操作,请应用递归来执行“第​​二,第三,级别等”。

def dict_filter(d, keep):
    if isinstance(d, dict):
        return { k:dict_filter(v, keep) for k,v in d.iteritems() if k in keep }
    return d


orig = {
    "firstname": "user",
    "last_name":"test",
    "roles": ["admin", "country"],
    "languages":{"first":"english", "second":"french"}
}

keepers = ['firstname', 'roles', 'languages', 'first']
print dict_filter(orig, keepers)