Python 匹配JSON键
当数据以下面的格式来自JSON时,我可以将其转换为Python中的字典。但是,信息的顺序并不总是相同的。例如,Python 匹配JSON键,python,json,Python,Json,当数据以下面的格式来自JSON时,我可以将其转换为Python中的字典。但是,信息的顺序并不总是相同的。例如,first\u name,我假设始终为0。然而,当我得到数据时,根据使用的形式,可能在2位置。因此,现在不再将first_name存储在右侧的db字段中,而是存储在email字段中 我的问题是:如何使用name键和value确保值与db字段匹配 { "name": "first_name", "values": [ "Joe" ] }, { "name":"la
first\u name
,我假设始终为0。然而,当我得到数据时,根据使用的形式,可能在2位置。因此,现在不再将first_name
存储在右侧的db字段中,而是存储在email
字段中
我的问题是:如何使用name
键和value确保值与db字段匹配
{
"name": "first_name",
"values": [
"Joe"
]
},
{
"name":"last_name",
"values": [
"Example"
]
},
{
"name": "email",
"values": [
"joe@example.com"
]
}
谢谢你,一如既往!:-)
更新 以下是我访问代码的方式:
first_name = data['field_data'][0]['values'][0].encode('utf-8')
last_name = data['field_data'][1]['values'][0].encode('utf-8')
email = data['field_data'][2]['values'][0].encode('utf-8')
telephone = data['field_data'][3]['values'][0].encode('utf-8')
我假设
first\u name
将始终处于0,即使情况并非如此。Python保存数据,它把电子邮件放在名字应该在的地方。在提交数据之前,我试图找到一种方法来验证JSONname
键是否与同一个db字段相对应。您应该通过在数组上迭代来查找具有所需名称的元素,而不是依赖于您指出的脆弱顺序
例如:
data = {
'field_data' : [
{
"name": "first_name",
"values": [
"Joe"
]
},
{
"name":"last_name",
"values": [
"Example"
]
},
{
"name": "email",
"values": [
"joe@example.com"
]
}
]
}
def get_values(name):
for data_element in data.get('field_data'):
if data_element.get('name') == name:
return data_element.get('values')
return None
if __name__ == "__main__":
first_name = get_values('first_name')[0]
last_name = get_values('last_name')[0]
email = get_values('email')[0]
print 'first_name: ' + first_name
print 'last_name: ' + last_name
print 'email: ' + email
在本例中,get_values
函数查找具有所需名称的元素。然后,在示例的最底部,我们使用它检索名字
、姓氏
和电子邮件
data = {"field_data":[{
"name": "first_name",
"values": [
"Joe"
]
},
{
"name":"last_name",
"values": [
"Example"
]
},
{
"name": "email",
"values": [
"joe@example.com"
]
}]}
这是迭代所有字段的一种相当简单的方法,如果您找到了与您要查找的内容相匹配的内容,只需将其指定给它即可。因此,为其余所需数据添加更多的ifs
for thing in data['field_data']:
if thing['name'] == 'first_name':
first_name = thing['values'][0]
通过适当地访问字典?是否缺少方括号?您拥有的JSON无效。@juanpa.arrivillaga这只是一个示例。@IgnacioVazquez Abrams我需要确保在提交表单时,
名称
键与我的数据库模型匹配,然后提交相应的值
@joshlsullivan我不确定您在说什么。你能不能详细介绍一下你的例子,或者至少向我们展示一下不起作用的代码,你得到的结果,以及你期望的结果?我知道这将是一个非常简单的解决方案。非常感谢。我喜欢你把它变成一个函数。我在一个Django班工作,不知道如何在那里工作。我会继续努力,但这正是我想要的。非常感谢。