Reputation: 615
i write some jsp to generate a json, but in one case,i meet a problem, i put order and get order are not same, i put 1,2,3,4,5 to jsonarray, but it seem return me a wrong order 3,2,5,1,4 that is my code in jsp:
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"}]
*/
}
so how can i get the right order same with my put to the hashmap??????? like [{"id":null, ?
Upvotes: 2
Views: 2778
Reputation: 926
Which library are you using? I am using the json-simple library and the following code worked:
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());
}
Output:
[{"id":"aaaaaa","packno":"bbbbb","photocover":"cccccc","photoback":"ddddd","evidi":"eeeeee","type":"ffffff"}]
Upvotes: 2