Same problem here. My JSON object looks like this:
{ "15" : { "name" : "abc", "desc" : "Lorem Ipsum" }, "4" : { "name" : "def", "desc" : "Foo Bar Baz" }, "24" : { "name" : "ghi", "desc" : "May be" }, "8" : { "name" : "jkl", "desc" : "valid" } }
The object is sorted by name on the server (glossary AZ), and I want to display the list with:
var data = myObject, i; console.log(data); for (i in data) { if (data.hasOwnProperty(i)) {
Chrome logs:
Object {4: Object, 8: Object, 15: Object, 24: Object}
and my for-in loop leads to wrong sorting. It is automatically sorted by the browser, but I need identifiers.
My decision:
I decided to change the keys with an underscore prefix. Now my object looks like:
{ "_15" : { "name" : "abc", "desc" : "Lorem Ipsum" }, "_4" : { "name" : "def", "desc" : "Foo Bar Baz" }, "_24" : { "name" : "ghi", "desc" : "May be" }, "_8" : { "name" : "jkl", "desc" : "valid" } }
Now Chrome logs:
Object {_15: Object, _4: Object, _24: Object, _8: Object}
And my list is displayed correctly.