天天看点

JSONObject.fromObjecr(list) 方法使返回的json格式数据的顺序与list集合中的数据顺序保持一致 ...

方法一:

使用net.sf.json的类库,在一个JSONObject中逐个加入key & value,最后toString()输出时,发现key / value 的顺序是无序的。原因是其中的实现是用HashMap来存储key / value。

要使输出是有序的,可以用LinkedHashMap来替换HashMap。

修改net.sf.json.JSONObject的构造函数

public JSONObject() {  
        this.map = new LinkedHashMap();  //new HashMap();  
} 
           

可能会对JSON 函数的执行效率有所影响。

方法二:

需要返回按一定顺序排列的 json 数据,也就是与集合中的数据顺序保持一致,但此时又不想修改JSONObject类的源码,那么不妨就使用返回的 顺序混乱的 json 数据,然后在前台对返回的 json 格式数据解析获取时做一下处理:

可以先定义一个数组

String[] str = new String[]{"里面存放json字符串的所有key值,可以按照自己想要的排列顺序来存放"} 例如:

jsonArray = new JSONArray(json_result);
jsonObject = jsonArray.getJSONObject(0);
List<Map<String, String>> data = new ArrayList<Map<String,String>>();
String[] str = new String[]{ "姓 名:", "性 别:", "籍  贯:", "政治面貌:", "出生日期:", "联系电话:"};
for(int i=0;i<jsonObject.length();i++){
	Map<String, String> map = new HashMap<String, String>();
	map.put("key", str[i]);
	map.put("value", jsonObject.getString(str[i]));
	data.add(map);
}
SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.list_item,new String[]{"key", "value"}, new int[]{R.id.name,R.id.value});
listView.setAdapter(simpleAdapter);