2014-01-31 6 views
0

Я хотел бы знать, какие преимущества есть (если есть) с выбором массива JSON над объектом JSON? У вас есть пример, где ясно, что один выбор лучше другого?Зачем выбирать массив JSON над объектом JSON или наоборот

У меня есть следующий пример:

JSON массива:

[ {"animal" : "deer", "colour" : "brown"}, {"animal" : "sloth", "colour" : "gray"}] 

JSON объекта:

{"animalList" : [ 
     {"animal" : "deer", "colour" : "brown"}, 
     {"animal" : "sloth", "colour" : "gray"} 
    ]} 

, но не может реально увидеть какие-либо преимущества при выборе одного над другим. Есть идеи?

ответ

0

Вы имеете в виду обертывание массива в объекте в ответе AJAX?

В старых браузерах возвращение массива может привести к уязвимостям безопасности, as detailed in this blog post. Я считаю, что основные браузеры больше не уязвимы для него, но не могут найти источник. Тем не менее, безопасность - это пояс и скобки, поэтому всегда возвращайте объект как ответ AJAX в любом случае.

+0

Да, я думаю, второй пример кода - это обертка массива в объекте. Просто интересно, есть ли какая-то причина выбирать один или другой, поскольку оба, похоже, работают и фактически одинаковы! – jcm

1

В этом примере нет преимущества. Но если вам нужна очевидная группировка, например, если вам часто приходится группировать животных по их классу, есть преимущество в написании этого:

{ 
    "birds": [ 
     {"animal" : "eagle", "colour" : "brown"}, 
     {"animal" : "pigeon", "colour" : "gray"} 
    ], 
    "mammals" :[ 
     {"animal" : "lion", "colour" : "yellow"}, 
     {"animal" : "tiger", "colour" : "orange"} 
    ] 
} 

по этому поводу:

{"animal" : "eagle", "colour" : "brown"}, 
{"animal" : "pigeon", "colour" : "gray"} 
{"animal" : "lion", "colour" : "yellow"}, 
{"animal" : "tiger", "colour" : "orange"} 

, потому что избавляет от необходимости для фильтрации их путем простого доступа к ним с помощью ключа, такого как animals['birds'].

Объекты обеспечивают быстрый доступ ключ по быстрому доступу на позиция. Вы решили написать животное, как это:

{"animal" : "deer", "colour" : "brown"} 

но вы также могли бы написать:

[ 
    { 
     "key": "animal", 
     "value": "eagle" 
    }, 
    { 
     "key": "colour", 
     "value": "brown" 
    } 
] 

Если вы не сделали, это потому, что вы уже поняли преимущество доступа цвет животного с animal['colour'].

0

Массивы имеют определенные функции, которые не могут выполняться непосредственно на объектах. Например sort, map и т. Д.

Смежные вопросы