解析动态更改json文件并将其存储为dict在Python中

问题描述:

我有动态更改json文件(不是整个文件动态更改,它只是在我将在下面指定的一个点),我需要迭代for循环在那点(它动态地改变),这样我就可以在json文件中获取该括号内的所需元素。下面是json片段的样子。解析动态更改json文件并将其存储为dict在Python中

"A" : { 
    "uni/aa/bb" (----> This changes randomly): [ { 
    "Name" : "cc", 
    "Id" : "1", 
    }, { 
    "Name" : "cc", 
    "Id" : "1", 
    } ] 
} 

我用re.search来匹配我在那一点上得到的模式。但没有运气。我需要最终存储名称和Id值。有什么建议么?

RESP = json.loads(RESP)--->这给出了上面提到的我JSON输出

下面是我试图码的样品。

for k in resp['A']: 
    for v in k['uni/aa/bb']: #---> TypeError: string indices must be integers 

for k in resp['A']: 
    m = re.search('uni/(.*)') #--> Because this is changing dynamically 
     if m: 
      name = str(m['Name']) #---> TypeError: '_sre.SRE_Match' object has no attribute '__getitem__' 
+1

很难确切地告诉你要问什么。你能否显示你尝试过的代码,并解释它是如何工作的? – glibdud

+0

@chaitanya如果你总是想知道属于“A”对象的子项的字符串键,并且不介意从json中删除项目,你可以尝试弹出该项。像这样:'key,value = resp [“A”]。popitem()'。从这个'key',你可以得到那些'uni/aa/bb'字符串,不管它是什么。在此之后,你还可以像这样深入地遍历那个孩子:'resp [“A”] [key] [“Name”]''。参考:https://*.com/a/3097896/623810 – PEIN

+0

您还可以使用json.keys()将所有键保存在一个列表中,并且当json更改时,检查哪个键不在此列表中并迭代? – iamkhush

如果你总是想知道属于"A"对象的孩子,不介意从JSON删除的项目串钥匙的情况下,你可以尝试坡平的东西。像这样:key, value = resp["A"].popitem()。从这个键,你可以得到那些uni/aa/bb字符串,不管它可能。在此之后,您还可以像这样深入遍历该孩子:resp["A"][key][0]["Name"]Reference

Sample code

另一种方法可能如下所示。而不是for v in k['uni/aa/bb']:使用此:的情况下,python3.xfor key, value in k.iteritems():python2.xReference

Sample code