org.json.JSONArray转换为int数组
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
首先,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方法的,加个前缀,以示区别;
还有一个array和真实的array差不多
private ArrayList<String> source=new ArrayList<String>();
JSONArray tmpsource = jsonObject.getJSONArray("source");
source.clear();
for (int i = 0; i < tmpsource.length(); i++) {
source.add(tmpsource.get(i).toString());
}
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
3 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献21条内容
所有评论(0)