SpringMVC通过JSON获取内部类的JSON对象列表

近几天工作遇到一个需求需要弄个电子地图,在里面还需要能添加标识点等等,这里思考左右标识点属于电子地图里面,便将标识点作为一个内部类写在了电子地图的类中。下面上个事例代码:

package com.yuxin.iot.admin.entity;

import java.util.List;

import com.yuxin.iot.base.BaseEntity;

/**
 * @author hr222
 * @version 1.0
 * @date 2019-01-17 09:23
 * @description 电子地图中的背景和站点的关联,对应数据库中的ag_map
 */
public class MapPoint extends BaseEntity{

	/**
	 * 
	 */
	private static final long serialVersionUID = 2187185700294342894L;

	/**
	 * id
	 */
	private int id;

	/**
	 * 电子地图中的俯瞰图的路径SRC
	 */
	private String svgPath;

	/**
	 * 图片的宽度
	 */
	private int width;

	/**
	 * @author hr222
	 * @version 1.0
	 * @date 2019-01-17 09:31
	 * @description 电子地图中的门信息(点信息),对应数据库中的ag_map_door
	 */
	public static class door extends BaseEntity{
		
		/**
		 * 
		 */
		private static final long serialVersionUID = -7055060818138970237L;

		/**
		 * door_id
		 */
		private int id;
		
		/**
		 * 门禁点的doorId,对应数据表中的sys_door_point 中的door_id
		 */
		public int doorId;
		
		/**
		 * 外部类的map的id
		 */
		private int mapId;
		
		/**
		 * 门名称
		 */
		private String name;
		
		/**
		 * 门状态
		 */
		private int status;
		
		/**
		 * 门标识点的宽度
		 */
		private int width;
		
		/**
		 * 门标识点的高度
		 */
		private int height;
		
		/**
		 * 字体大小
		 */
		private int fontSize;
		
		/**
		 * 门标识点的X坐标
		 */
		private String x;
		
		/**
		 * 门标识点的Y坐标
		 */
		private String y;

	}
}

(get/set方法排除)这里的内部类必须是静态内部类,不然下面的JSON无法绑定到数据,会报MapPoint$door <init>()无法初始化的异常。数据库表中的东西就不贴上来了。直接上controller中的相关:

@RequestMapping(value = "/setDoorInfo", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
	public @ResponseBody String setDoorInfo(@RequestBody List<door> door){
		
		
		
		return "success";
	}

逻辑处理代码就不上了,这里debug进去是能正常绑定的。这里需要注意的点是produces后面必须要有,同时要指定编码不然中文会出现乱码。

下面是JS的

        var fontSize = $("#fontSize").val();
		var doorWidth = $("#doorWidth").val();
		var doorHeight = $("#doorHeight").val();
		if (XList.length > 0){
			//用于记录门禁点信息的
			var text = $("#root g text");
			var doorList = [];
			for (var i = 0;i < XList.length;i++){
				var doorId = text[i].id;
				var doorName = text[i].innerHTML;
				var x = XList[i];
				var y = YList[i];
				var is = new Object(); 
				is.doorId = doorId;
				is.name = doorName;
				is.width = doorWidth;
				is.height = doorHeight;
				is.fontSize = fontSize;
				is.mapId = routeId;
				is.x = x;
				is.y = y;
				doorList.push(is);		
			}
			var json_str = JSON.stringify(doorList);
			$.ajax({
				url: '/smart/map/setDoorInfo' ,  
				type: 'POST',  
				async: false,
				dataType : "json",
				contentType : "application/json",
				data : json_str,
				success:function(data){
					if (data == '"success"'){
						layer.msg("保存成功");
					}
				}
			});
		}

这里需要将数组对象转换成为JSON对象,同时 contentType : "application/json"一定要有不然后台会报 Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported的异常。

上面写的比较匆忙主要是因为公司这个项目功能比较紧,另外这个功能折腾了我一天,记录一下代码。以上是记录SPRINGMVC用JSON接受内部类的事例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值