1

I have json answer like

{
"bField":"some data",
"aField":"some data",
"cField":"some data",
"dField":{
              "b1Field":"some data",
              "c1Field":"some data",
              "a1Field":"some data"
         }
}

and I want to get that json, sorted by field name

{
"aField":"some data",
"bField":"some data",
"cField":"some data",
"dField":{
              "a1Field":"some data",
              "b1Field":"some data",
              "c1Field":"some data"
         }
}

I use Gson on server for create json, so my first question: can Gson sort fields by name? Or tell me of some sites or JavaScript libraries, which can convert json to json with sorted by name fields?

UPDATED:

I modify 'sortObject' function by @dariogriffo for sorting nested object fields:

    function sortObject(o) {
        var sorted = {},
            key, a = [];

        for (key in o) {
            if (o.hasOwnProperty(key)) {

                if (o[key]!=null && typeof o[key] === 'object'){
                    o[key] = sortObject(o[key]);
                }

                a.push(key);
            }
        }

        a.sort();

        for (key = 0; key < a.length; key++) {
            sorted[a[key]] = o[a[key]];
        }
        return sorted;
    };  

Now is work good for me.

halfer
  • 19,824
  • 17
  • 99
  • 186
Frank59
  • 3,141
  • 4
  • 31
  • 53

1 Answers1

1

you can try this on your javascript side

function sortObject(o) {
    var sorted = {},
    key, a = [];

    for (key in o) {
        if (o.hasOwnProperty(key)) {
            a.push(key);
        }
    }

    a.sort();

    for (key = 0; key < a.length; key++) {
        sorted[a[key]] = o[a[key]];
    }
    return sorted;
}

var q = {
bField:'some data',
aField:'some data',
cField:'some data',
dField:{
              b1Field:'some data',
              c1Field:'some data',
              a1Field:'some data'
         }
};

var p = sortObject(q);
console.log(p);
dariogriffo
  • 4,148
  • 3
  • 17
  • 34