2012-03-08 57 views
2

我寫一些JSP生成一個JSON,但在一種情況下,我遇到一個問題, 我把訂單和獲得順序不一樣, 我把1,2,3,4,5到jsonarray,但它似乎返回我一個錯誤的順序3,2,5,1,4 這是我的代碼在JSP中:如何訂購JSONArray?

Map map = new LinkedHashMap(); 
Iterator itor = listView.getList().iterator(); 
JSONObject json = new JSONObject(); 
JSONArray jArray = new JSONArray(); 

while (itor.hasNext()) { 
    current = (EvidPackageDao) itor.next(); 
    map.put("id", current.getPackageId()); 
    map.put("packno", current.getPackageNo()); 
    map.put("photocover", current.getPhotoCover()); 
    map.put("photoback", current.getPhotoBack()); 
    map.put("evidi", current.getEvidIndentification()); 
    map.put("type", current.getEvidType()); 
    map.put("verno", current.getVersionNo()); 
    map.put("isbn", current.getIsbn()); 
    map.put("pub", current.getPublisher()); 
    map.put("distr", current.getDistributor()); 
    map.put("producer", current.getProducer()); 
    map.put("cprl", current.getCoptrightLogo()); 
    map.put("cprt", current.getCopyrightText()); 
    map.put("reason", current.getIllegalReason()); 

    Iterator it = map.entrySet().iterator(); 

    while (it.hasNext()) 
      { 
      Map.Entry entry = (Map.Entry) it.next(); 
     Object key = entry.getKey(); 
     Object value = entry.getValue(); 
     System.out.println("key=" + key + ", value=" + value); 

    } 

      /* 
      print: 
     key=id, value=81 
     key=packno, value=fsdfdsfsdf 
     key=photocover, value=null 
     key=photoback, value=null 
     key=evidi, value=sdfsadf 
     key=type, value=dsfsdf 
     key=verno, value=sdfasdfl 
     key=isbn, value=3224jsfklf 
     key=pub, value=fdsjkla 
     key=distr, value=lkfjl;dsfklj 
     key=producer, value=fdafjdsl; 
     key=cprl, value=sdfjadlfkj 
     key=cprt, value=sdfadff 
     key=reason, value=fdsfdsafasf 

      */ 
    jArray.put(map); 
    System.out.println(jArray.toString()); 
      /* 
      print: 
       [{"reason":null,"distr":null,"type":null,"pub":null,"verno":null,"id":82,"cprl":null,"isbn":null,"evidi":null,"photoback":null,"producer":null,"packno":null,"photocover":null,"cprt":null},{"reason":"fdsfdsafasf","distr":"lkfjl;dsfklj","type":"dsfsdf","pub":"fdsjkla","verno":"sdfasdfl","id":81,"cprl":"sdfjadlfkj","isbn":"3224jsfklf","evidi":"sdfsadf","photoback":null,"producer":"fdafjdsl;","packno":"fsdfdsfsdf","photocover":null,"cprt":"sdfadff"}] 
      */ 

} 

所以,我怎麼能得到正確的順序相同與我投入到HashMap的?????? ?像[{「id」:null,?您使用的

+0

你爲什麼想要的順序? LinkedHashMap的不要讓你把在 – janwen 2012-03-13 05:59:36

回答

2

哪個庫?我使用JSON-簡單的庫和下面的代碼工作:

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Map map = new LinkedHashMap(); 
    JSONArray jArray = new JSONArray(); 


    map.put("id", "aaaaaa"); 
    map.put("packno", "bbbbb"); 
    map.put("photocover", "cccccc"); 
    map.put("photoback", "ddddd"); 
    map.put("evidi", "eeeeee"); 
    map.put("type", "ffffff"); 


    jArray.add(map); 
    System.out.println(jArray.toString()); 

} 

輸出:

[{"id":"aaaaaa","packno":"bbbbb","photocover":"cccccc","photoback":"ddddd","evidi":"eeeeee","type":"ffffff"}] 
+0

耶士的元素的順序,我發現JSON-簡單庫,而不是我的lib,現在是確定的,三江源非常多 – chanjianyi 2012-03-13 08:50:24