[英]Getting values from json array using an array of object and keys in Python
我是Python的新手,我正在尝试编写脚本以通过动态传递键并从csv中读取键来提取json键。 首先,这是我的第一篇文章,对于我的问题是平庸的,并且代码不完整,我很抱歉,但这只是理解问题的伪代码(我希望不要使其复杂化...)
以下部分代码从三个键(组,用户和ID或用户名)中检索值,但我想从csv加载对象和键以使其具有动力学特征。
输入json
{
"fullname": "The Full Name",
"group": {
"user": {
"id": 1,
"username": "John Doe"
},
"location": {
"x": "1234567",
"y": "9876543"
}
},
"color": {
"code": "ffffff",
"type" : "plastic"
}
}
Python代码...
...
url = urlopen(jsonFile)
data = json.loads(url.read())
id = (data["group"]["user"]["id"])
username = (data["group"]["user"]["username"])
...
File.csv加载到数组中。 每行包含一个或多个键。
fullname;
group,user,id;
group,user,username;
group,location,x;
group,location,y;
color,code;
问题是:我可以使用包含要提取的对象或键的变量吗? 我如何指定在keys数组中有多少个key才能仅使用一行将它们放入data([] [] ...)?
像这样的伪代码:
...
url = urlopen(jsonFile)
data = json.loads(url.read())
...
keys = line.split(',')
...
# using keys[] to identify the objects and keys
value = (data[keys[0]][keys[1]][keys[2]])
...
但是,行value = (data[keys[0]][keys[1]][keys[2]])
应该具有从csv读取的每行的确切密钥数。 还是我必须像这样做出一些“如果”行?:
...
if len(keys) == 3:
value = (data[keys[0]][keys[1]][keys[2]])
if len(keys) == 2:
value = (data[keys[0]][keys[1]])
...
非常感谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.