本文主要是介绍org.json.JSONArray转换为int数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先,org.json.JSONArray转换为数组这一需求相信很多人是遇不到的,我也是脑抽了才有这个需求,先讲一下为啥我会有这个需求吧;
我在写java后台,前后台数据传输用的json格式,前台传给后台的一个参数值的格式是数组,后台取到的数据格式就是JSONArray ,然后我需要这个数组为参数使用mybatis进行数据库查询,因为是第一次写,就直接把查询条件的参数写成了数组,然后又懒得改(其实,也想知道应该怎么转换,毕竟好奇心太重),所有我需要把前台传给我的JSONArray转行成java数组,于是我就有了这个需求;以后数据库查询的集合参数尽量使用List,或者是Map(我在找mybatis使用集合作为参数进行数据库查询的方法的时候,还非常纳闷,为啥都是List,Map,很少有array,现在知道了);
org.json.JSONArray转换为数组,有两种思路,第一种是把JSONArray转换成字符串,然后把字符串转换为数组,第二种是把JSONArray转换成List,然后把List转换为数组
第一种思路的实现:
JSONObject req = new JSONObject(URLDecoder.decode(str, "UTF-8"));//org.json.JSONArray不能直接转化为数组,尝试先转string,再转array;String str1 = req.get("analysisItemId").toString();//正常情况下,JSONArray很少转化为数组,//此处字符串比正常数组多出一对[],要先去除;String str2 = str1.substring(1);String idsStr = str2.substring(0,str2.length()-1);String[] idsStrArray = idsStr.split(",");int[] ids = new int[idsStrArray.length]; for(int i=0; i < idsStrArray.length; i++){ ids[i] = Integer.parseInt(idsStrArray[i]); }
第二种思路的实现:
这里没有使用List的toArray()方法,是因为该方法只能用于Object数组,不能用于int[];
JSONObject req = new JSONObject(URLDecoder.decode(str, "UTF-8"));JSONArray idsJSONArray = (JSONArray) req.get("analysisItemId");//org.json.JSONArray没有toArray()方法,但是有toList()方法List idsList = (List) idsJSONArray.toList();int[] ids = new int[idsList.size()]; for(int i = 0;i<idsList.size();i++){ids[i] = (Integer) idsList.get(i); }
org.json.JSONArray提供了toList()方法,但是没有提供toArray()方法;
这里的JSONArray前面一直加了org.json,是因为还有一个库的JSONArray是有toArray方法的,加个前缀,以示区别;
这篇关于org.json.JSONArray转换为int数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!