前端传JSON,后端怎么解析存入数据库?
/** * 新增 * * @param workPermit * @return */ @Transactional public WorkPermit create(@NotNull WorkPermit workPermit, LoginUser loginUser) { //List<T> 转 json字符串 var jsonStringA = JSON.toJSONString(workPermit.getGasNameList()); var jsonStringB = JSON.toJSONString(workPermit.getOtherPermitNameList()); var jsonStringC = JSON.toJSONString(workPermit.getSafeMeasureList()); workPermit.setGasName(jsonStringA); workPermit.setOtherPermitName(jsonStringB); workPermit.setSafeMeasure(jsonStringC); checkState(SqlHelper.retBool(workPermitRepository.insert(workPermit)), "创建失败"); return workPermit; }
workPermit.getGasNameList() 里面是一个对象集合,JSON.toJSONString方法可以解析JSON
最后存入数据库:workPermit.setGasName(jsonStringA);也是JSON形式。 查询时需要JSON转数组。
JSON转数组:gson.fromJson
需要引入依赖:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.9.1</version> </dependency>
JSON转数组后取值,我的数组最多四个。所以用if取值。
//气体检测结果 private PdfPTable initReportCardTitleTableGasCheckResult(BaseFont baseFont, WorkPermit workPermit) { var table = initReportCardBaseTableOtherPermitName(); //一列 table.addCell(initIndexCell(baseFont, "气体检测结果:", 1)); //获取一个JSON String gasName = workPermit.getGasName(); //JSON 转数组 var gson = new Gson(); var jsonArray = gson.fromJson(gasName, JsonArray.class); // 取值,第一个肯定是有值 var jsonObjectA = jsonArray.get(0).getAsJsonObject(); var gasCheckResultA = jsonObjectA.get(GASCHECKRESULT).getAsString(); table.addCell(initIndexCell(baseFont, gasCheckResultA, 1)); // 数组长度大于1就进入 if (jsonArray.size() > 1) { var jsonObjectB = jsonArray.get(1).getAsJsonObject(); var gasCheckResultB = jsonObjectB.get(GASCHECKRESULT).getAsString(); table.addCell(initIndexCell(baseFont, gasCheckResultB, 1)); } else { //反之就创建一个空格吧 table.addCell(initIndexCell(baseFont, "", 1)); } if (jsonArray.size() > 2) { var jsonObjectC = jsonArray.get(2).getAsJsonObject(); var gasCheckResultC = jsonObjectC.get(GASCHECKRESULT).getAsString(); table.addCell(initIndexCell(baseFont, gasCheckResultC, 1)); } else { table.addCell(initIndexCell(baseFont, "", 1)); } if (jsonArray.size() > 3) { var jsonObjectD = jsonArray.get(3).getAsJsonObject(); var gasCheckResultD = jsonObjectD.get(GASCHECKRESULT).getAsString(); table.addCell(initIndexCell(baseFont, gasCheckResultD, 1)); } else { table.addCell(initIndexCell(baseFont, "", 1)); } return table; }