2014-10-28 127 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