Android JSONObject适用于多选筛选条件的添加结合MongoDB语法

匿名 (未验证) 提交于 2019-12-03 00:27:02

图先欠着:

1.使用JSONObject来保存数据,添加多条数据来实现多选的状态,若是使用SharedPreferences的话不太适合多选,只是适合单选的状态保存,还有点麻烦,所以我选择了JSONObject来保存数据:


这里会用到对key-value的组合使用,上图是项目中打印的筛选条件的日志,用的是MongoDB结合使用的:

创建多个对象结合MongoDB并添加数据:

 JSONObject json = new JSONObject();     JSONObject moneyJson = new JSONObject();//借入总额     JSONObject daysToLendJson = new JSONObject();//周期     JSONObject preminmJson = new JSONObject();//借入日利率 
   try {                         moneyJson.put("$gte", "10");//大于等于10  芒果db语法  添加到借入总额中                         moneyJson.put("$lte", "50");//小于等于50                     } catch (JSONException e) {                         e.printStackTrace();                     }
 try {                         daysToLendJson.put("$lt", "7");//小于7                     } catch (JSONException e) {                         e.printStackTrace();                     }

上面是根据多选的按钮的点击在监听事件里添加数据,下面是添加对象的数据:

  try {                             GlobalLog.e("sgf", moneyJson.length() + "==========moneyJson=============");                             GlobalLog.e("sgf", preminmJson.toString() + "==========preminmJson=============");                             GlobalLog.e("sgf", daysToLendJson.toString() + "==========daysToLendJson=============");                             if (moneyJson.length()>0 && !moneyJson.equals(null)) {                                 json.put("b_token_amount", moneyJson);//借入总额                             }                             if (preminmJson.length()>0 && !preminmJson.equals(null)) {                                 json.put("premium", preminmJson);//借入日利率                             }                             if (daysToLendJson.length()>0 && !daysToLendJson.equals(null)) {                                 json.put("days_to_lend", daysToLendJson);//借入周期                             }                           } catch (JSONException e) {                             e.printStackTrace();                         }

网络请求和赋值最后组合的对象,并且在选择后清空数据,不然筛选的条件会保留导致筛选条件有问题:

    String gameMap = json.toString();                         GlobalLog.e("sgf", gameMap + "=============gameMap==========");                         requestHomeService(URLConstant.URL_GETALLBRBYPAGE, 0, 10, gameMap);//请求数据                         //清空数据                         json=null;                         preminmJson=null;                         daysToLendJson=null;                         moneyJson=null;                          json = new JSONObject();                         preminmJson = new JSONObject();                         daysToLendJson = new JSONObject();                         moneyJson = new JSONObject();

请求数据的方法也贴出来吧,用的是OKGo,这里就不多做解释了:

/**      * 开始请求      */     private void requestHomeService(String url, int start, int page_size, String gameMap) {//start=0&page_size=10&filter=  //URLConstant.URL_GETALLBRBYPAGE+"start=0&page_size=10&filter=" //        OkGo.<String>get(URLConstant.URL_GETALLBRBYPAGE+"start="+start+"&page_size="+"filter="+filter).tag(this).execute(new StringCallback() {         OkGo.<String>get(url + "start=" + start + "&page_size=" + page_size + "&filter=" + gameMap).tag(this).execute(new StringCallback() {              @Override             public void onSuccess(Response<String> response) {                 GlobalLog.e("sgf", map + "=============map=========="); //                et_id.setText(response.body().toString());                 dataBean.clear();//数据数据重复要clear                 GlobalLog.e("sgf", response.body().toString() + "==========666=============");                  loanContractsContract = JsonUtil.fromJson(response.body(), LoanContractsContract.class);                 for (int i = 0; i < loanContractsContract.getData().size(); i++) {                     b_token_name = loanContractsContract.getData().get(i).getB_token_name();                     token_name = loanContractsContract.getData().get(i).getToken_name();                     GlobalLog.e("sgf", token_name + "=============token_name==========");                 }  //                dataBean.add(response.body());                 GlobalLog.e("sgf", "---------------" + loanContractsContract.getData().size() + "------------------------------");                  if (loanContractsContract.getData().size() == 0) { //                    ToastUtil.showShort(context,"无数据");                     setViewNotNetWork(8, 0, 0, 3);                 } else {                     setViewNotNetWork(0, 8, 0, 2);                 }                 dataBean.addAll(loanContractsContract.getData());                 mLoanmarketListAdapter = new LoanmarketListAdapter(getActivity());                 mLoanmarketListAdapter.setData(dataBean);                 listView_loanmarket.setAdapter(mLoanmarketListAdapter);                 mLoanmarketListAdapter.notifyDataSetChanged();                 DialogUtil.getInstance().closeLoadingDialog();             }              @Override             public void onError(Response<String> response) {                 super.onError(response); //                ToastUtil.showShort(walletApplication,"请求失败:"+loanContractsContract.getMessage());                 DialogUtil.getInstance().closeLoadingDialog();             }          });

下面是我写的一个Map转JSON的方法,里面也是对数据的保存:

/**      * Map转JSON      *      * @return gameMap      */     public static String mapToJson(String key,String value) {         // TODO SGF ADD         Map<String,String> map=new HashMap<String,String>();         //添加元素         map.put(key, value);         ObjectMapper mapper = new ObjectMapper();//map转JSON对象         String gameMap = null;         try {             gameMap = mapper.writeValueAsString(map);         } catch (JsonProcessingException e) {             e.printStackTrace();         }         return gameMap;     }     /**      * 多个Map转JSON      *      * @return gameMap      */     public static String mapToJsonMore(String preminm_lte_key,String preminm_lte_value, String preminm_gte_key,String preminm_gte_value,                                        String daysToLend_lt_key,String daysToLend_lt_value,                                        String status_key,String status_value,String premium,String days_to_lend,                                        String b_token_amount,String b_token_amount_key,String b_token_amount_value) {         // TODO SGF ADD  //        条件操作符 //        db.col.find({"likes" : {$gt : 100}})  大于 //        db.col.find({"likes" : {$gte : 100}})  大于等于 //        db.col.find({"likes" : {$lt : 100}})    小于 //        db.col.find({"likes" : {$lte : 100}})    小于 //        db.col.find({likes : {$lt :200, $gt : 100}})   100<n<200 //        db.col.find({"likes" : {$ne : 100}})    不等于 //        db.col.find({"likes" : {$eq : 100}})    等于         String str =null;         try {             //{   "status" : "4",   "premium" : {     "$lte" : "0.15",     "$gte" : "0.1"   },   "days_to_lend" : {     "$lt" : "7"   } }             JSONObject json = new JSONObject();             JSONObject moneyJson = new JSONObject();//借入总额             moneyJson.put(b_token_amount_key,b_token_amount_value);             moneyJson.put("","");             JSONObject preminmJson = new JSONObject();//借入日利率 //            if(preminm_lte_key!=null||preminm_lte_key!=""){                 preminmJson.put(preminm_lte_key, preminm_lte_value); //            }else if("".equals(preminm_lte_key)||preminm_lte_key.equals(null)){ //                GlobalLog.e("sgf", preminm_lte_key+ "是空的"); //            }            if(preminm_gte_key!=null||preminm_gte_key!=""){                preminmJson.put(preminm_gte_key, preminm_gte_value);            }             GlobalLog.e("sgf", preminm_lte_key+ "=========9====preminm_lte_key==========");             GlobalLog.e("sgf", preminm_gte_key+ "=========9====preminm_gte_key==========");              JSONObject daysToLendJson = new JSONObject();//周期             daysToLendJson.put(daysToLend_lt_key, daysToLend_lt_value);              json.put(status_key, status_value);             json.put(b_token_amount, moneyJson);//借入总额             if(preminm_lte_key!=null||preminm_lte_key!=""){              json.put(premium, preminmJson); }             json.put(days_to_lend, daysToLendJson);             str =  json.toString();             GlobalLog.e("sgf", json.toString() + "=========9====json.toString()==========");         } catch (JSONException e) {             e.printStackTrace();         }         return str;     }


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!