嗨,我的python代码中有一个JSON对象,我将它们用作代码中的对象。它的类型是JSONHelper.X,这是我编写的自定义类,它读取json文件并将其转换为易于使用的对象。
{
"Gui":{
"Images":{
"Logo1":"url1",
"Logo2":"url2",
"Logo3":"url3",
"Logo4":"url4",
"Logo5":"url5"
}
}
}
如何从该对象中检索一对属性名称和值,以提供另一个类作为参数。 JSONHelper对象似乎没有 dict 属性,因此我不能说Gui.Images.keys()。当我打印Gui.Images时,我只会得到值。
我可以达到以下属性名称。有什么更好的方法吗?
def prop_names(self):
l = []
public_props = (name for name in dir(self.settings.Images) if not name.startswith('_'))
for name in public_props:
if name is not "count" and name is not "index":
print(name)
print(l
)
output:
Logo1
Logo2
Logo3
Logo4
Logo5
答案 0 :(得分:0)
使用json.load将JSON帮助程序字符串转换为字典(请参阅Barmar的注释)。从那里可以访问所需的键值。
import json
import itertools
j="""{
"Gui":{
"Images":{
"Logo1":"url1",
"Logo2":"url2",
"Logo3":"url3",
"Logo4":"url4",
"Logo5":"url5"
}
}
}"""
d = json.loads(j)
l = [list(d[k1][k2].keys()) for k1 in d.keys() for k2 in d[k1].keys()]
print(list(itertools.chain.from_iterable(l)))
结果:
['Logo1', 'Logo2', 'Logo3', 'Logo4', 'Logo5']