js中java中对json字符串、json对象、jsonArray的处理
2018-01-03 17:42
489 查看
首先在js中:
这就是简单的只有一个对象的json数组字符串。
通过eval来解析json字符串,这里需要注意的地方就是要在jsonstr外加一个括号。
因为eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。简单讲就是参数必须是可执行的js脚本或者是js变量,如果是变量就返回变量值,如果是可执行的代码就执行代码。但不接收不可运行的js脚本作参数,其中{}就是之一。
为了让最外层的{}不要被eval理解成为Javascript的代码块的开始.而是理解成为一个对象字面量。
然后通过push来插入新的json对象,这里多的一个功能就是判断所要新增的json对象是否已经存在。
在java中对json的处理:
js部分代码:
在传递到后台之前,将json数组通过stringify转换成json字符串,在通过ajax传递到后台。
后台代码:
这里需要注意的地方就是接受参数类型的设置,我一开始觉得他传递过来的是json数组字符串,所以用string[] jsonarray来接收参数,接收的参数看起来是json格式,是没什么问题,但是在java中通过fromObject转换成jsonArray时候回出现格式错误,从而导致无法找到json数组中的json对象。
其实,通过ajax传递过来的数据就是string类型的json字符串。可以通过fromObject方法转换成jsonArray
jsonArray中存放着许多对象,例:
这里存放了两个对象,我用for循环对这个json数组进行遍历其中的对象,把两个json对象中对应的数据取出来存放到javaBean中,然后保存早数据库
在这里用的是jsonarray中的getJSONObject(i);,得到数组中第几个相应的对象,然后再通过get(“key”),得到键值对的值。
var jsonstr="[{'startTime':'00:00','endTime':'00:00','ifOnduty':0,'typeOnduty':0,'cordate':20180103,'employeeId':0,'scheduleTableId':0}]";
这就是简单的只有一个对象的json数组字符串。
var jsonarray = eval('('+jsonstr+')');
通过eval来解析json字符串,这里需要注意的地方就是要在jsonstr外加一个括号。
因为eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。简单讲就是参数必须是可执行的js脚本或者是js变量,如果是变量就返回变量值,如果是可执行的代码就执行代码。但不接收不可运行的js脚本作参数,其中{}就是之一。
为了让最外层的{}不要被eval理解成为Javascript的代码块的开始.而是理解成为一个对象字面量。
var arr = { "startTime" : startTime, "endTime" : endTime, "ifOnduty": ifOnduty, "typeOnduty": typeOnduty, "cordate": cordate, "employeeId": employeeId, "scheduleTableId": scheduleTableId } for(var i=0;i<jsonarray.length;i++){ if(jsonarray[i].scheduleTableId==scheduleTableId){ flag=true; index=i; } } if(flag==true){ jsonarray[index].startTime=startTime; jsonarray[index].endTime=endTime; jsonarray[index].ifOnduty=ifOnduty; jsonarray[index].typeOnduty=typeOnduty; jsonarray[index].cordate=cordate; jsonarray[index].employeeId=employeeId; }else{ jsonarray.push(arr); }
然后通过push来插入新的json对象,这里多的一个功能就是判断所要新增的json对象是否已经存在。
在java中对json的处理:
js部分代码:
function updateTable(){ var jsonstring=JSON.stringify(jsonarray); $.ajax({ url:"updateTableByEmployeeId", type:"post", data:{"jsonarray":jsonstring}, success:function(msg){ } }); }
在传递到后台之前,将json数组通过stringify转换成json字符串,在通过ajax传递到后台。
后台代码:
@RequestMapping("updateTableByEmployeeId") public void UpdateScheduleTableByEmployeeId(String jsonarray){ JSONArray jsonarr=JSONArray.fromObject(jsonarray); scheduleservice.updateTableByEmployeeId(jsonarr); }
这里需要注意的地方就是接受参数类型的设置,我一开始觉得他传递过来的是json数组字符串,所以用string[] jsonarray来接收参数,接收的参数看起来是json格式,是没什么问题,但是在java中通过fromObject转换成jsonArray时候回出现格式错误,从而导致无法找到json数组中的json对象。
其实,通过ajax传递过来的数据就是string类型的json字符串。可以通过fromObject方法转换成jsonArray
jsonArray中存放着许多对象,例:
[{"startTime":"00:00","endTime":"00:00","ifOnduty":0,"typeOnduty":0,"cordate":20180103,"employeeId":0,"scheduleTableId":0},{"startTime":"09:22","endTime":"18:00","ifOnduty":1,"typeOnduty":"2","cordate":"20180103","employeeId":"1024525831687730","scheduleTableId":"6180"}]
这里存放了两个对象,我用for循环对这个json数组进行遍历其中的对象,把两个json对象中对应的数据取出来存放到javaBean中,然后保存早数据库
for(int i=0;i<jsonarray.size();i++){ ScheduleTable scheduleTable=new ScheduleTable(); JSONObject job=jsonarray.getJSONObject(i); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat sdf1 = new SimpleDateFormat("hh:mm"); try { 4000 Date date=sdf.parse(job.getString("cordate")); Date startTime=sdf1.parse(job.getString("startTime")); Date endTime=sdf1.parse(job.getString("endTime")); scheduleTable.setDate(date); scheduleTable.setEmployeeId(job.getString("employeeId")); scheduleTable.setEndTime(endTime); scheduleTable.setIfOnduty(job.getString("ifOnduty")); scheduleTable.setStartTime(startTime); scheduleTable.setTypeOnduty(job.getString("typeOnduty")); scheduleTable.setScheduleTableId(job.getInt("scheduleTableId")); sTabledao.updateByTableId(scheduleTable); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } //scheduleTable.setDate(jsonarray[i].cordate); }
在这里用的是jsonarray中的getJSONObject(i);,得到数组中第几个相应的对象,然后再通过get(“key”),得到键值对的值。
相关文章推荐
- 非标准json,标准json,json字符串与js对象,Java对象之间的相互转换
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- JSON 字符串 与 java,js 对象的转换
- js解析json数组+java对象转json字符串
- web服务端使用JSONArrayy或JSONObject转json字符串为Java对象或数组
- velocity 实现将 java List Array POJO对象转成 JSON 字符串.md
- 使用json.org和json-lib来处理json字符串和java对象的转化
- js前端处理json对象,或者json的字符串
- 【问题-java-json】josn的发送与接收(全)解析json对象与字符串在js中的区别,以及后端spring该如何接收?
- js+ajax处理java后台返回的json对象循环创建到表格的方法
- java 字符串转json对象 js json 转 java对象
- js json对象转string java字符串转json 转java对象
- 工作笔记:ajax json 同一jsp页面中,把java变量赋给js变量,如果java变量字符串符合json格式,则赋给js变量时,js变量会自动的变为json对象
- JS对象转化成JSON字符串
- js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
- Java对象创建和初始化过程,处理字符串的机制
- Json字符串转换为JS对象方法
- MVC中处理Json和JS中处理Json对象
- [学习记录]js处理json的list对象
- 转换js对象为json字符串的例子