从数据库获取json组成的某一列并获取json中的值

post提交:

{"tableName":"(表名)","field":"(列名)","where":"(查询条件)","DBJson":{"url":"jdbc:(数据库地址)?characterEncoding=UTF-8" ,"username":"","password":""}}

所获取的列的形式:

{"success":"true","detail":{"check":"X50380缺失”,"code":"002","result":[{"notHappenProbability":0.99203277,"rejectionRate":0.6595714,"score":65.957146,"trainDataVersion":"100"}]}}

目的:获取json中的score对应的分值

java代码:

String url= params.get("body").replaceAll("%(?![0-9a-fA-F]{2})", "%25"); 
param = URLDecoder.decode(url, "utf-8").trim();
JSONObject json=JSONObject.fromObject(param);

String dataName = json.getString("tableName");
String where = json.getString("where");
BatchService batchService = (BatchService)MyBeanFactory.getService("batchService");
JSONObject DBJson=json.getJSONObject("DBJson");
String field=json.getString("field");
List<JSONObject> findtPayment = batchService.findtPayment(dataName, where, DBJson);

List<String> ScoreList=new ArrayList<>();

               for(JSONObject jParam:findtPayment){
final JSONObject jsonObject= jParam.getJSONObject(field).has("params")? 
jParam.getJSONObject(field).getJSONObject("params"):jParam.getJSONObject(field);
  
if (jsonObject.getString("success").equals("true")) {
JSONObject detail=jsonObject.getJSONObject("detail");

if (detail.has("result")) {
JSONArray resultArray=detail.getJSONArray("result");
for(int i=0;i<resultArray.size();i++){
JSONObject object=resultArray.getJSONObject(i);
String score=object.getString("score");
ScoreList.add(score);
}
}
  }

}

注意:根据json格式写判断条件,我的json列里面有打分不成功的情况,并且success=true之后还有可能出现打分失败没有result的情况,所以添加了判断条件。

猜你喜欢

转载自blog.csdn.net/weixin_40909201/article/details/80666952