按字段名称对json字段进行排序

时间:2014-10-28 10:28:45

标签: json gson

我有json回答

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

我希望得到json,按字段名称

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

我在服务器上使用Gson来创建json,所以我的第一个问题:Gson可以按名称对字段进行排序吗?或者告诉我一些网站或JavaScript库,它们可以将json转换为json,并按名称字段排序?

更新:

我通过@dariogriffo修改'sortObject'函数来排序嵌套对象字段:

    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;
    };  

现在对我有用。

1 个答案:

答案 0 :(得分:1)

你可以在你的javascript端尝试这个

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);