在建模JSON数据时,我们通常会处理唯一对象标识符。我们可以将它们建模为(i) key (或 property )或(ii) value 。哪个是最好的解决方案,如果有的话,或者什么是利弊?这里有一个例子。
标识符为关键:
[
{
"1": {
"tel": "tel1",
"e-mail": "mail2"
}
},
{
"2": {
"tel": "tel2",
"e-mail": "mail2"
}
}
]
标识符为id
键的值:
[
{
"id": 1,
"tel": "tel1",
"e-mail": "mail2"
},
{
"id": 1,
"tel": "tel2",
"e-mail": "mail2"
}
]
答案 0 :(得分:3)
第2号的好处
[
{
"id": 1,
"tel": "tel1",
"e-mail": "mail2"
},
{
"id": 1,
"tel": "tel2",
"e-mail": "mail2"
}
]
可能是每个模型及其信息都表示为一个JSON对象。如果模型的ID是模型的属性,则这是合乎逻辑的。在这种情况下,将所有属性保存在一个对象中是很好的,而不需要嵌套对象来描述与模型有关的同一“级别”的属性。
但是,出于同样的原因,如果ID不是模型的属性,而是单独的值,那么你应该使用选项1,因为它说:这里是第一个对象,这些是它的属性。这是第二个对象,这些是它的属性等。
2的另一个潜在好处是可以更容易在客户端解析(这取决于你如何解析它,你使用哪个库等等)。如果手动解析,您可以简单地遍历JSON数组中的所有对象,并且该循环中的每个项代表一个具有其所有属性的模型,而不需要深入挖掘,就像您需要使用1一样。
此外,正如Pietro正确建议的那样,通过移除每个对象周围的{}
,可以使选项1变得更漂亮。
{
"1": {
"tel": "tel1",
"e-mail": "mail2"
},
"2": {
"tel": "tel2",
"e-mail": "mail2"
}
}
然而,您的整个JSON将是一个对象。这在语义上是错误的。你不应该这样做。
考虑到这一点,选项2也更漂亮。不那么迷惑{}
。
Pietro的另一个正确评论:
JSON是一种数据交换格式,并不是非常接近建模工具。您应首先查看您的数据模型,(类,数据库或其他),然后在您的JSON(de)序列化程序中:您应该从那里选择JSON表示