我在一个JSON文件中有一些数据,我正试图操作它。我之前没有对JSON做过很多工作,我想知道是否可以通过它的一个值而不是索引来选择一个对象。在
以下是我的json文件:
{"device":[
{"id": 0, "name": "iPhone 6", "width": 750, "height": 1334},
{"id": 1, "name": "iPhone 6 Plus", "width": 1242, "height": 2208},
{"id": 2, "name": "Galaxy S6", "width": 1440, "height": 2560}
]}
我想选择id = 0
的对象并打印出name
值。我意识到,典型的方法是通过对象的索引值来选择对象,在本例中,索引值与id
值相匹配,这意味着我会做如下操作:
这将打印出名称,但它依赖于索引等于id,在理想情况下,id就是这样。也许更好的方法是将索引作为id
并完全删除该字段,这样就不会产生混淆?在我看来,这似乎是一个重复的索引,虽然它的存在使我可以在我的数据库中存储一个ID,并在JSON文件中独立地编辑name
,但是它有一些具体的东西来表示顺序(即,有人可能会在文件的顶部添加一个设备,从而移动其他设备的索引,从而破坏整个系统)。我觉得我在寻找错误的数据结构,而且没有办法按照以下思路来做:
print(json_obj['device'][id = 0]['name']
我说得对吗?在
没有什么比这更有效的了,但是你可以做一些类似的事情:
它生成一个id==0的所有元素的列表。在id not found的情况下更难处理。在
从设计的角度来看,如果您可以控制数据的来源,或者您可能想要处理它,则更像是:
^{pr2}$如果你没有控制权,你可以通过:
在实践中,您可能不只是想覆盖现有的变量,而是通过这种方式保持所有其他变量不变。在
当然有很多简单的方法可以做到这一点。在
小提示:这与JSON没有任何关系。一旦解析了数据,它就不再是JSON,而是内存中的常规数据(列表、字符串、字典等)
一种简单的方法是使用循环:
您也可以通过理解或其他复杂(和简洁)的方法来实现这一点,但上面的方法可能更直接和简单。在
还有一个名为JSONPath(其Python module)的系统可以让您以更具声明性和更自然的方式表达查询。在
相关问题 更多 >
编程相关推荐