¡que tal, compatriota!
interesante el asunto, no lo sabia. parece que javascript detecta que todos son numericos y por ende los ordena. lo de convertir el número a string, es imposible. de hecho, se supone que todos los identificadores para propiedades son convertidas a string. es decir, ningún identificador puede ser númerico.
Código:
var obj = {0: "zero"};
// notese como se indica la propiedad y el valor devuelto ;
console.log(obj[0], obj["0"]);
// no obstante, esto no es valido ;
console.log(obj.0);
en fin, javascript no lo ordena cuando al menos una de las propiedades contiene un caracter que no sea numérico. no necesariamente tiene que ser todas las propiedades. por tanto, una posible solución seria crear una propiedad dummy que no sea a base de números y luego la desechas.
Código:
{ "10": "foo", "9":"bar", "1":"baz", "5":"bat", "6":"candy", "dummy":"dummy" };