def flatten(nested): for k,v in nested.items(): try: yield [(' '+k+' ').join(x) for x in flatten(v)] except AttributeError: // list 没有 items 方法 for i in v: yield [k,i] data={ "or":{ "like":{ "name": ["aaa", "bbb"] } } } print list(flatten(data)) >>>[['name like aaa or name like bbb']]
就算每种操作符的处理方式都不一样的也没关系,只要往
rator_handler
里添加新的处理方式就行了。 编辑:添加了infix的排版方式。可以参考一下json格式解析的代码
这个还算能用。
超过三层嵌套貌似就不行了?