java后台解析前端传来的json
@RequestMapping(value = {"save"})
@ResponseBody
public Result save(TBaseInterventionPlan model,String tBaseRegulateInterventions) {
Result result;
List<TBaseRegulateIntervention> list = new ArrayList<TBaseRegulateIntervention>();
if (StringUtils.isNotBlank(tBaseRegulateInterventions)) {
JSONArray json = JSONArray.parseArray(tBaseRegulateInterventions); // 首先把字符串转成 JSONArray 对象
if (json.size() > 0) {
for (int i = 0; i < json.size(); i++) {
JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象
TBaseRegulateIntervention t = new TBaseRegulateIntervention();
t.setRegulateId(job.get("regulateId").toString());
t.setContent(job.get("content").toString());
list.add(t);
}
}
}
//保存更改干预方案
iTBaseRegulateInterventionService.update(model, list);
result = Result.success();
return result;
}
public void update(TBaseInterventionPlan model, List<TBaseRegulateIntervention> tBaseRegulateInterventions){
List<TBaseRegulateIntervention> list = new ArrayList<TBaseRegulateIntervention>();
Map<String,String> map = new HashMap<String,String>();
if(StringUtils.isNotBlank(model.getId())){
TBaseRegulateIntervention tBaseRegulateIntervention = new TBaseRegulateIntervention();
tBaseRegulateIntervention.setInterventionId(model.getId());
//通过干预方案id查找关联表中的方案内容
list = tBaseRegulateInterventionMapper.select(tBaseRegulateIntervention);
if (CollectionUtils.isNotEmpty(list) && CollectionUtils.isNotEmpty(tBaseRegulateInterventions)){
//将查出来的list保存到map
for(TBaseRegulateIntervention t : tBaseRegulateInterventions){
map.put(t.getRegulateId(),t.getContent());
}
//将前台传进来的list和数据库的list比较,改变了就更新
for(TBaseRegulateIntervention s : list){
System.out.print("++++++++++++++" + s.getRegulateId());
System.out.print("***************" + s.getContent());
if(!s.getContent().equals(map.get(s.getRegulateId()))){
System.out.print("-----------------" + map.get(s.getRegulateId()));
s.setContent(map.get(s.getRegulateId()));
tBaseRegulateInterventionMapper.updateByPrimaryKeySelective(s);
}
}
}
//干预方案id不为空就更改干预方案
iTBaseInterventionPlanService.updateByPKNotNull(model);
}else {
model.setCreateTime(new Date());
//干预方案id为空就保存干预方案
iTBaseInterventionPlanService.save(model);
if(CollectionUtils.isNotEmpty(tBaseRegulateInterventions)){
for (TBaseRegulateIntervention r : tBaseRegulateInterventions) {
TBaseRegulateIntervention tBaseRegulateIntervention = new TBaseRegulateIntervention();
tBaseRegulateIntervention.setRegulateId(r.getRegulateId());
tBaseRegulateIntervention.setInterventionId(model.getId());
tBaseRegulateIntervention.setContent(r.getContent());
tBaseRegulateIntervention.setCreateTime(new Date());
this.save(tBaseRegulateIntervention);
}
}
}
}
很久没写博客了,除了工作忙懒得写之外,还有第一篇关于FQ的博客被系统删了让我很无语,这次就记录一下JSON解析的问题,以后再遇到可以快速找到类似的解决方法。
java后台解析前端传来的json的更多相关文章
- 项目记事【SpringMVC-1】:后台接收前端传来的JSON,并转成对象
背景: 最近项目中使用SpringMVC,需要从前端接收JSON格式的请求,在后端自动转成一个与JSON格式相同的对象. 由于是一个老项目,Spring的版本是3.2.7. 问题1:POST or G ...
- java后台对前端输入的特殊字符进行转义
转自:http://www.cnblogs.com/yangzhilong/p/5667165.html java后台对前端输入的特殊字符进行转义 HTML: 常见的帮助类有2个:一个是spring的 ...
- JSON的简单使用_解析前台传来的JSON数据
package cn.rocker.json; import org.junit.Test; import net.sf.json.JSONArray; import net.sf.json.JSON ...
- 你不可错过的二维码生成与解析-java后台与前端js都有
1.二维码分类 二维条码也有许多不同的码制,就码制的编码原理而言,通常分为三种类型. 线性堆叠式二维码 编码原理: 建立在一维条码基础之上,按需要堆积成两行或多行. 图示: 矩阵式二维码 最常用编 ...
- Java后台 解析JSON的几个方法
1.对象转JSON对象. public static void main(String[] args) { Domain demo = new Domain( "在线JSON校验格式化工具 ...
- Java如何接收前端传来的多层嵌套的复杂json串
想看问题直接解决方式,直接拉到博文底部. Spring的controller在接收前端传参的时候如果参数使用@RequestBody标注的时候 @RequestBody 则会把前端参数转为JSON的形 ...
- 【Jsoup】Jsoup解析Html标签(Java后台解析)
中文API网站(下载地址): http://www.open-open.com/jsoup/ 有时候编辑器传到后台的内容是带Html标签的,或者有时候需要形成一个完整的Html文档,也或者需要解析其中 ...
- c#将前端传来的Json解析成对象
描述:因工作中需要将C#中的Json字符串转换为对象,对此记录下. 解决办法: 1.前端传过来的Json字符串,OrderAppModuleJson即前端传递到后端的Json字符串 string st ...
- java后端接收前端传来的复杂对象(包含List对象集合)
最近在和安卓对接口的时候发现往java后端传数据的时候,后台对象无法接收. 说明:后台对象为 类似结构 ObjectA{ private String a; private String b; pr ...
随机推荐
- 二,编程语言类别,和python变量基础
编程语言类别 机器语言:由二进制组成,直接控制操作硬件,执行效率高,开发效率低. 汇编语言:用英文代替二进制,直接操作控制硬件,执行效率高,开发效率低. 高级语言: 编译型,如C语言,类似谷歌翻译,先 ...
- 剑指Offer 53. 表示数值的字符串 (字符串)
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- 剑指Offer 5. 用两个栈实现队列 (栈)
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 题目地址 https://www.nowcoder.com/practice/54275ddae22f4 ...
- POJ 1284:Primitive Roots(素数原根的个数)
Primitive Roots Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5709 Accepted: 3261 Descr ...
- java面试题01
一.JAVA基础 1.简述你所知道的JAVA修饰符及各自的使用机制?(public.abstract.final.synchronized.super…) 01.public:允许所有客户访问 02. ...
- yii2 自带分页使用
//下面为控制器层的方法内容use \yii\db\Query;use \yii\data\Pagination; //方法内容 $query=new Query();//from为自带 ...
- RabbitMQ python模块pika生产者消费者轮询模型。
完整代码如下: 生产者,producer import pika connection = pika.BlockingConnection( pika.ConnectionParameters('lo ...
- EasyUI datagrid 序列 化后时间 处理 九
@{ ViewBag.Title = "Home Page"; Layout = null; } <!DOCTYPE html> <html> <he ...
- JS 点击复制
一.原理分析 浏览器提供了 copy 命令 ,可以复制选中的内容 document.execCommand("copy") 如果是输入框,可以通过 select() 方法,选中输入 ...
- MySQL 和 Oracle 在 MyBatis 使用中的区别
MySQL 和 Oracle 在 MyBatis 使用中的区别: 区别 MySQL Oracle 存储过程的参数模式 mode 为 IN 时,是否需要指定 jdbcType 不需要:MyBatis 为 ...