如何从python3中的JSON文件获取所有嵌套字段的列表?

时间:2019-04-12 20:28:47

标签: json python-3.6

我想读取每个文件,如下所示:

{
    "addr": {
        "street": "29393",
        "apt": "203",
        "addr1": "Oak Avenue",
        "addr2": "Suite 2",
        "city": "Denvrer",
        "state": "CO"
    },
    "disposition": "available",
    "location": {
        "latitude": "203030303",
        "longitude": "929393"
    }
}

然后如何在该JSON中获取一排以名称分隔的字段?我想要一个唯一的以名称分隔的字段的列表,像这样:

addr.street
addr.apt
addr.addr1
addr.addr2
addr.city
addr.st
disposition
location.latitude
location.longitude

如何在Python3中实现?

1 个答案:

答案 0 :(得分:1)

对于您这里需要的目的,这已经足够了:

def get_field_list(somedict, parent=''):
    fieldlist = []

    for k, v in somedict.items():
        if parent:
            fieldlist.append(f"{parent}.{k}")
        if isinstance(v, dict):
            fieldlist += get_field_list(v, parent=k)

    return sorted(set(fieldlist))

结果将是:

['addr.addr1', 'addr.addr2', 'addr.apt', 'addr.city', 'addr.state', 'addr.street', 'location.latitude','location.longitude']

您可以尝试整个过程 https://repl.it/@raa/InsubstantialOutstandingStartups

但是您需要考虑数组中的对象是否有发生的可能性,并且这些字段在整个层次结构中都是唯一的,而此代码不会招待您。