JQuery getJSON автоматически сортирует мои данные по идентификатору

У меня есть поле со списком, которое запускает функцию jquery при изменении, оно вызывает PHP скрипт, который приносит результаты из базы данных, отсортированной по имени, не по id (таблицы городов) и создает json файл с идентификатором и название города. Проблема связана с функцией $.getJSON(url, data), она отлично считывает все json-кодированные данные, но, похоже, она автоматически сортирует данные по id

например, если php-страница генерирует

id  name
3   Dania Beach
1   Miami
2   Weston

после jquery getJSON сортирует его по id

id  name
1   Miami
2   Weston
3   Dania Beach

Есть ли способ отключить сортировку? или как можно сохранить заказ по имени?

Ответ 1

Это ассоциативный массив: порядок не имеет значения. Следующие объекты JSON эквивалентны:

{
    "3" : "Danie Beach",
    "1" : "Miami",
    "2" : "Weston"
}

{
    "1" : "Miami",
    "2" : "Weston",
    "3" : "Danie Beach"
}

Если вам нужен заказ, вы должны вместо этого встроить массив в JSON:

{
    "beaches" : [
        {"key" : "3", "value" : "Danie Beach"},
        {"key" : "1", "value" : "Miami"},
        {"key" : "2", "value" : "Weston"}
    ]
}

Пример использования:

jQuery.ajax({
    ...
    dataType: 'json',
    success: function(data) {
        jQuery.each(data.beaches, function(i, beach) {
            alert(i+': beach['+beach.key+'] = '+beach.value);
        });
    }
});