2015-09-04 46 views
0

我在我的JSON的結構如下:抓取嵌套值給出點符號

obj = { 
    'Name': 'David', 
    'Car': { 
      'Make': 'Ford', 
      'Year': 2008 
    } 
} 

我給點符號指代對象的值,例如:

Car.Make ==> 'Form' 

給出一個字符串,如"Car.Make",我將如何以編程方式獲取屬性?在上面的例子中,這將是:

obj.get('Car').get('Make') 

但對於一個深度嵌套的對象,我怎麼會提取給出"Attr1.Attr2.Attr3...Attrn"點符號的價值呢?

+0

我不認爲有將是一個解決方案,它是語法上有效的爲Java和Python。 – Kevin

+0

@Kevin抱歉,Java是一個錯誤。 – David542

回答

1
obj = { 
    'Name': 'David', 
    'Car': { 
      'Make': 'Ford', 
      'Year': 2008 
    } 
} 
s = "Car.Make" 
x = obj 
keys = s.split(".") 
for key in keys: 
    x = x[key] 
print(x) 

結果:

Ford 

,或者在一個班輪形式:

from functools import reduce 
print(reduce(lambda a,b: a[b], s.split("."), obj))