2014-10-28 102 views
0

我JSON答案像排序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并按名称字段排序?

更新:

我修改 'sortObject' 功能通过@dariogriffo排序嵌套对象字段:

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

现在是工作为我好。

+2

为什么试试这个?字段的顺序不应该是重要的 – 2014-10-28 10:33:24

+1

http://stackoverflow.com/questions/881510/jquery-sorting-json-by-properties也许这会帮助你? – 2014-10-28 10:37:19

+0

@TimCastelijns,我需要比较2个jsons并找到不同的领域。首先json不是我的,并且有字段结构,按字段名排序。 – Frank59 2014-10-28 12:06:07

回答

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

谢谢。有用! – Frank59 2014-10-28 12:00:36