2012-04-12 3 views
0

На данный момент у нас есть сайт, управляемый AJAX, который возвращает ответ JSON в следующем формате: [{"n":"bob"}, {"n":"jim"}, ..., {"n":"alex"}]. В основном массив объектов json.

Однако мы думаем о его структурировании так: [["bob"], ["jim"], ..., ["alex"]]. В основном массив массивов.

Очевидное различие заключается в том, что вместо доступа к данным через его свойства мы будем обращаться к нему через предполагаемые позиции индекса (т. Е. Array [0] == name), но кроме того, мне любопытно, что профи/минусы каждого. Интересные факторы: производительность на клиенте (как построение структуры данных, так и извлечение ее значений), пропускная способность (очевидно, на больших наборах данных или для более медленных интернет-подключений, например, на мобильных устройствах), дизайн/наилучшая практика, и т. д.json array v json objects - pros cons

+2

Вопрос не достаточно точен, и ответ имеет вкус «очевидного». – Vincent

+2

Как насчет только '['bob', 'jim', 'alex']'? – neoascetic

+0

* «Предполагаемые позиции индекса» * - Вы ответили на свой вопрос, почему это обычно плохая идея. – deceze

ответ

1
  • При использовании формата объекта-в-массиве, вы можете загрузить больше данных за единицу, а не только n.

    [{ 
         'name' : 'John', 
         //more data about john 
    },{ 
         'name' : 'Joe', 
         //more data about joe 
    }] 
    //myArray[0].name = John 
    
  • При использовании массива, предполагается, что возвращаемые данные, чтобы быть одного и того же рода.

    ['John','Joe'...] //all names 
    //myArray[0] = John 
    

, но все это сводится к тому, как вы разбираете данные.


структурирования данных, как это:

[["bob"], ["jim"], ..., ["alex"]] 

совершенно неправильно. зачем поместить имя в массив, в массив имен? для чего нужен второй уровень?

+0

Извините, я пытался просто привести простой пример, чтобы избежать путаницы ,Если вы предпочитаете более сложный пример, скажем, что каждый элемент в списке содержит больше, чем просто имя, возможно, данные профиля человека. –

+0

@paulsmith тогда объекты в массиве (первый образец в моем ответе) были бы более безопасным решением для этого. – Joseph

0

Подход массива не позволит вам использовать значащие имена индексов, поэтому я бы использовал объекты JSON. Вы также обнаружите, что большинство языков программирования имеют хорошие библиотеки для создания вывода JSON.

Если вы не имеете дело с очень большими наборами данных, я не думаю, что подход массива будет обеспечивать заметное преимущество в производительности.

+0

Да, с точки зрения удобочитаемости, подход JSON Object лучше. Но вы говорите, что массивы _are_ на самом деле быстрее объектов? Если да, то с точки зрения чего? Доступ? Синтаксический? Память? –

+0

http://stackoverflow.com/questions/8423493/what-is-the-performance-of-objects-arrays-in-javascript-specifically-for-googl –

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