如何在类似JSON的对象中正确存储数据?从我所看到的,有两种方法可以在json对象中存储数据。两者都有不同的方式来访问数据(Python中的示例):
选项1:
obj1 = [
{"id": 1, "payload": "a"},
{"id": 2, "payload": "b"},
{"id": 3, "payload": "c"},
]
在选项1中访问某个id的有效负载:
for element in obj1:
if element["id"] == 2:
print(element["payload"])
这意味着,必须扫描整个元素列表(可能)以找到正确的id并返回其值。
另一方面,选项2:
obj2 = {
1: "a",
2: "b",
3: "c",
}
要访问第二个“id”的有效负载,只需:
print(obj2[2])
我现在的问题是,为什么看到选项1更为常见,即使这一点看起来更复杂?我何时使用选项1和选项2?
答案 0 :(得分:2)
我们应该澄清一些术语。
当您在[]
中放置值列表时,您正在创建一个数组;它由数组索引键入,而不是由数据的任何元素键入。
当您在{}
中放置键和值列表时,您正在创建一个对象;您可以注意,如果您知道相应的密钥,则可以找到一个值。
两种结构之间存在许多差异。在您的站点的特定用例中 - 想要根据其字段值之一查找数据实例 - 使用该字段作为键的对象是有意义的。
但是对象键是无序的。并且数组更自然地让你自己迭代它们的所有元素。
这取决于你要对价值观做些什么;这就是为什么不只有一个数据结构。
答案 1 :(得分:1)
除了以某种方式演变的技术工件之外,如果元素的顺序很重要,选项一有意义。