Chrome and IE sorts JSON Object automatically, how to disable this?

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 at server (A-Z glossary) and I want to render a list with:

var data = myObject, i;

console.log(data);

for (i in data) {
    if (data.hasOwnProperty(i)) {
         // do stuff
    }
}

Chrome logs:

Object {4: Object, 8: Object, 15: Object, 24: Object}

and my for-in loop results in wrong sort. It’s automatically sorted by the browser, but I need the IDs.

My solution:
I decided to change the keys with a prefixed underscore. My object looks now:

{
  "_15" : { "name" : "abc", "desc" : "Lorem Ipsum" },
  "_4"  : { "name" : "def", "desc" : "Foo Bar Baz" },
  "_24" : { "name" : "ghi", "desc" : "May be" },
  "_8"  : { "name" : "jkl", "desc" : "valid" }
}

And Chrome logs now:

Object {_15: Object, _4: Object, _24: Object, _8: Object}

And my list is rendered correct.

Leave a Comment