2015-10-23 39 views
2

我有,我有一些陣的鑰匙JSON對象:鍵位獲得在JSON對象自動排序

{ 
    "body":{ 
    "menus":{ 
     "":[ 
     { 
      "name":"home", 
      "label":"Home", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_global_search", 
      "label":"Search", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     } 
     ], 
     "Favorites":[ 
     { 
      "name":"core_mini_messages", 
      "label":"Messages", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_mini_notification", 
      "label":"Notifications", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_mini_friend_request", 
      "label":"Friend Requests", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_user", 
      "label":"Members", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_album", 
      "label":"Albums", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_video", 
      "label":"Videos", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_blog", 
      "label":"Blogs", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_classified", 
      "label":"Classifieds", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_group", 
      "label":"Groups", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_event", 
      "label":"Events", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"core_main_music", 
      "label":"Music", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     } 
     ], 
     "Account Settings":[ 
     { 
      "name":"user_settings", 
      "label":"Settings", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"contact_us", 
      "label":"Contact Us", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"privacy_policy", 
      "label":"Privacy Policy", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     }, 
     { 
      "name":"terms_of_service", 
      "label":"Terms Of Service", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     } 
     ], 
     "Help & Settings":[ 
     { 
      "name":"signout", 
      "label":"Sign Out", 
      "headerLabel":"", 
      "icon":"", 
      "url":"" 
     } 
     ] 
    }, 
    "languages":{ 
     "default":"en", 
     "languages":{ 
     "en":"English" 
     } 
    } 
    } 
} 

我要遍歷以相同的順序,他們從服務器傳來的元素,但鑰匙自動按字母順序改變他們的順序。

任何想法?

回答

0

我對這個問題的解決方法是發送另一個對象,該對象具有一個key => value與數字作爲鍵和菜單項作爲值的關聯。

{1:"", 2:"Favorites", 3:"Account Settings", 4:"Help & Settings"} 

然後,我會遍歷這個對象,並用它從正確的順序檢索原始對象的菜單。

+0

'{1:「」,2:「收藏夾」,3:「帳戶設置」,4:「幫助和設置」}'[不是有效的json](http://bit.ly/1NroA4W) ... – Selvin

+0

這只是一個例子,解釋我的意思。 – Skytiger

0

看着以前的答案似乎有要解決的問題有兩種方式:

  1. 重組數據,改變menues看起來像這樣:

    { 
        "menues": [ 
          {"": ... }, 
          {"Favorites": ... }, 
          ...]} 
    
  2. 更改JSONObject.java文件使用HashMap,但LinkedHashMap應該保持順序。這隻會在使用你的JSONObject.java的系統中工作。

    //this.map = new HashMap(); 
    this.map = new LinkedHashMap(); 
    

兩個解決方案,我從那裏得到:Keep the order of the JSON keys during JSON conversion to CSV爲更好的解釋。