2017-06-17 60 views
0

假设我有功能,通过一个Python数据结构跨过并返回数据进出口寻找列表格式解析的所有路径:如何动态地从列表中生成一个JSON路径

['section', 'section', 'section', 1, 'name', ] 
['section', 'section', 'section', 1] 
['section', 'section'] 

然后我有另一个功能是通过同样的JSON迭代分析数据

with open(json_file) as data_file: 
json_202 = data.load(data_file) 



def parseJson(*argv) : 
    for arg in argv: 
     #do stuff 

section1 = json_202["section"]["section"]["section"][1]["name"] 
section2 = json_202["section"]["section"]["section"][1] 
section3 = json_202["section"] 

我调用这个函数像这样:

parseJson(section1, section2, section3) 

什么是从第一功能动态转换列表结果到第2个功能,而不是硬楞条section1section2相匹配的格式更Python的方法,section3

+0

将列出的第一个元素始终是JSON的重点对象 –

+0

那么,什么叫“JSON”的意思,因为它看起来像您使用Python列表/类型的字典,而不是JSON,这是一个工作基于文本的序列化格式。 –

+0

是列表中的所有元素都是数据的关键,我想要解析的数据 – Darth

回答

0

下面的代码应执行相同的,但是在其他的方式:

def parse_json_by_path(pathes, data): 
    for path in pathes: 
     item = data 
     for key in path: 
      item = item.get(key) 
     # do stuff 


    parse_json_by_path([["section", "section","section", 1, "name",], 
         ['section', 'section', 'section', 1], 
         ['section', 'section']], json_202) 
+0

谢谢,任何想法为什么即时获取“AttributeError:'列表'对象没有属性'获取'”,当我试图打印项目? – Darth