json前后台交互(三)

纸上得来总觉浅,绝知此事要躬行

就是基本的增删改查,却耗费了3天的时间。

问题1:

        前端传给后台的数据是 [object,Object] 想不明白的是这还是一个String类型的字符串,没错,就是'[','o','b','j','e','c','t'

在后台改了很长时间的代码,当时考虑的是怎么将这个json字符串(误以为是)变成JSONObject对象

/**
	 * 群控方案保存---单条 saveSingleCtrlSolution
	 * @Description
	 * @param
	 * @return
	 * @throws IOException
	 */
	@RequestMapping(value = "/saveSingleCtrlSolution", method = RequestMethod.POST)
	@ResponseBody
	@SystemLog(module = "群控方案管理", methods = "群控方案添加--单条")
	public void saveSingleCtrlSolution(@Param("groupControl")ControlSolution groupControl, HttpServletRequest request, HttpServletResponse response) throws IOException {
		Map map = new HashMap();
		String returnData = "";
		
		//int result = controlSolutionLogic.saveControlSolutionConfig(groupControl);
		int result = controlSolutionLogic.saveControlSolutionExpression(groupControl);
		//JSONArray texts = JSON.parseArray(bxModel.getText());
		
		
		int t = 0;
		
//		for(String express:expressArray) {
//			JSONObject jsonObject=JSONObject.fromObject(express);
//			String name = jsonObject.getString("name");
//			System.out.println(express);
//			//JSONObject js = (JSONObject)express;
//			String t = null;
//			String name = express.getString("name");
//			JSONArray jsonArray = (JSONArray) JSONArray.parse(express);
//			JSONObject jExpress = (JSONObject)jsonArray.get(0);
			
//			JSONParser parser = new JSONParser();
//			JSONObject jExpress;
//			try {
//				jExpress = (JSONObject) parser.parse(express);
//
//				String name = jExpress.getString("name");
//				String t = null;
//			} catch (ParseException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
			
			
//		}
		
//		for(Object obj:expressArray) {
//			JSONObject js = (JSONObject)obj;
//			String name = js.getString("name");
//			String t = null;
//					
//		}
//		controlSolutionLogic.saveControlSolutionExpression(null);
//		if (result == 1) {
//			returnData = returnJsonAllRequest(request, response, map, SUCCESS, "");
//		} else {
//			returnData = returnJsonAllRequest(request, response, map, ERROR, "");
//		}
		response.getWriter().println(returnData);

基本上每次都是报错误的json格式串,不知道为什么一直执迷不悟了好长时间,最后去前端一探究竟

        groupControl.solutionType = 2;
	groupControl.expressArray=JSON.stringify(expressArray);
	console.log(groupControl);
	var url = config.apiDomain + 'webapi/controlSolution/saveSingleCtrlSolution';
	//获取设备列表数据
	$http({
	    method: 'post',
	    url: url,
	    data: groupControl
	})
	    .success(function(data) {
	        debugger;
		console.log(data);
		$location.path('/page/groupControl/list');
	    });

就是一句 JSON.stringify()序列号

问题2:

        后台怎么接收已经序列化了的(String)类型的字符串?

将该串添加到一个类的属性之中,这样就可以直接传这个对象到后台,后台收到以后直接获取到对象,让后得到该属性

  String expressArray = controlSolution.getExpressArray();
JSONArray createArray=JSONArray.parseArray(expressArray);
  if (JudgeNullUtil.iList(createArray)) {for (int i = 0; i < createArray.size(); i++) {    controlSolutionExpre = new ControlSolutionExpre();    String expressionCode = CodeUtil.controlSolutionExpressionCode(digit);// 创建群控方案表达式code    controlSolutionExpre.setSolutionCode(controlSolutionCode);    controlSolutionExpre.setCode(expressionCode);    String name = createArray.getJSONObject(i).getString("name");    String pointCode = createArray.getJSONObject(i).getString("point_code");    String condition = createArray.getJSONObject(i).getString("condition");    controlSolutionExpre.setName(name);    controlSolutionExpre.setPointCode(pointCode);    controlSolutionExpre.setCondition(condition);    controlSolutionExpre.setStatus(1);    controlSolutionDao.insertExpre(controlSolutionExpre);}}

前台代码:

[html]  view plain  copy
  1. $.ajax({  
  2.     type:"post",  
  3.     url:"project/updateProject",  
  4.     data:{  
  5.         formdata: JSON.stringify(formdata),  
  6.         tabname:$("#tabname").val(),  
  7.         id: $("#proid").val()  
  8.     },  
  9.     success:function(data){  
  10.         alert("保存成功");  
  11.     },  
  12.     error:function(data){  
  13.         alert("网络错误,保存失败");  
  14.     }  
  15. });  

后台代码:

[html]  view plain  copy
  1. //更新项目信息  
  2. public void updateProject(){  
  3.     String formdata = getPara("formdata");  
  4.         JSONObject jo = JSONObject.fromObject(formdata);  
  5.     //将json字符串转成json对象后遍历键值对  
  6.      Map<String, Object> map =jo;  
  7.      Record r = new Record();  
  8.                for (Entry<String, Object> entry : map.entrySet()) {    
  9.         r.set(entry.getKey(), entry.getValue());  
  10.                }   
  11. }  


你可能感兴趣的:(json,ajax,工作总结)