2010-07-23 12 views
8

Zostałem obciążony tworzeniem prostego źródła danych, aby klienci mogli pobierać listę rzeczy według JSON. Każda rzecz ma identyfikator, więc moim pierwszym odruchem było stworzenie czegoś podobnegoJSON: kluczowe elementy według id, czy nie?

{ 
    "13": { 
     "name": "foo", 
     "height": 17 
    }, 
    "18": { 
     "name": "bar", 
     "height": 22 
    } 
... 
} 

Ale powiedziano mi, że jest to nadużycie właściwości JS jako asocjacyjnej, tak, że coś takiego byłoby bardziej odpowiednie :

[ 
    { 
     "id": 13, 
     "name": "foo", 
     "height": 17 
    }, 
    { 
     "id": 18, 
     "name": "bar", 
     "height": 22 
    } 
] 

Druga wersja wydaje się ... trudna. Jaka jest tutaj najlepsza praktyka?

+0

Dlaczego miałoby to stanowić nadużycie? Wydaje mi się, że to bardzo legalne użycie. –

Odpowiedz

3

Powszechnym sposobem na to jest to drugie i nie ma praktycznie żadnych korzyści z robienia tego pierwszego. Co najwyżej uratowałeś konsumenta swojego API przed pięcioma naciśnięciami klawiszy, w najgorszym przypadku stworzyłeś interfejs API, który jest o wiele mniejszy niż sam wyjaśniający. tj. czy klucz jest identyfikatorem przedmiotu? Czy to jakiś inny identyfikator? Czy jest wyjątkowy tylko dla tej prośby? Itd.

8

Jeśli chcesz uzyskać dostęp do obiektu poprzez identyfikator, użyj poprzedniego wariantu z identyfikatorem jako nazwą właściwości. Następnie możesz uzyskać bezpośredni dostęp do tego obiektu, używając identyfikatora obiektu. W przeciwnym razie, jeśli chcesz pracować ze wszystkimi obiektami, skorzystaj z tego ostatniego wariantu.

+1

Nie wiem, jak klienci będą jeszcze używać tych danych. – erjiang

Powiązane problemy