Почему @ResponseBody возвращает отсортированный LinkedHashMap как не отсортированный?

Вот фрагмент кода SpringMVC контроллера:

@RequestMapping(value = "/getCityList", method = RequestMethod.POST)
public @ResponseBody LinkedHashMap<String, String> getCityList(@RequestParam(value = "countryCode") String countryCode, HttpServletRequest request) throws Exception {
    //gets ordered city list of country  [sorted by city name]
    LinkedHashMap<String, String> cityList = uiOperationsService.getCityList(countryCode); 

    for (String s : cityList.values()) {
        System.out.println(s); //prints sorted list  [sorted by name]
    }
    return cityList;
}

Вот вызов ajax:

function fillCityList(countryCode) {
        $.ajax({
            type: "POST",
            url: '/getCityList',
            data: {countryCode:countryCode},
            beforeSend:function(){
                $('#city').html("<option value=''>-- SELECT --</option>" );
            }
        }).done(function (data) {

            console.log(data); // UNSORTED JSON STRING  [Actually sorted by key... not by city name]

        })
    }

Сортированный LinkedHashMap возвращается как несортированный объект JSON из метода getCityList. Почему заказ меняется в процессе возврата? Преобразуется ли LinkedHashMap в HashMap из-за аннотации ResponseBody? Я могу преобразовать свой отсортированный объект в строку json через библиотеку Gson и вернуть строку json из моего метода getCityList, но мне не нравится это решение. Что я могу сделать, чтобы обеспечить метод обратного вызова JavaScript с отсортированным списком?

Ответы на вопрос(2)

Ваш ответ на вопрос