Spring 接收转换 jquery ajax json数组字符串

1、ajax发送json字符串

</pre><p>组建对象</p><p></p><pre code_snippet_id="449843" snippet_file_name="blog_20140813_2_7927326" name="code" class="javascript">var student = new Object();
student.name = "柯乐义";
student.age = "25";
student.location = "广州";

var student2 = new Object();
student2.name = "柯范德萨";
student2.age = "45";
student2.location = "FDA";

myList.push(student);
myList.push(student2);
ajax发送,注意datatype ,type 等的正确赋值,使用jsonstringify对对象进行模型转换,转换后的字符串能够在http://www.bejson.com/ 进行在线json格式检查正确与否。

            $.ajax({ //请求登录处理页
                        url:url, //登录处理页
                        dataType:"json",
                        data: JSON.stringify(<span style="font-family: Arial, Helvetica, sans-serif;">myList</span><span style="font-family: Arial, Helvetica, sans-serif;">),</span>
			type: "POST",
                        headers : {
					 'Accept' : 'application/json',
					 'Content-Type' : 'application/json'
				   },
					
                        success:function (strValue) { //登录成功后返回的数据
                            //依据返回值进行状态显示
                            //alert(strValue);
                            if (strValue.successful == "true") {
                                alert("发送成功@@");
                            }
                            else {
                                alert("发送失败@@");
                            }

                        },

                        error:function () {

                            alert("请检查是否有參数错误@@");
                        }
                    });


2、spring进行配置


配置requestbody进行json字符串的数组转换

    @RequestMapping(value="/upload",produces="application/json")
    @ResponseBody
    public String login(HttpServletRequest req, HttpServletResponse reponse,
    		String from,String id,@RequestBody SnapInfo[] apList) throws UnsupportedEncodingException {
    	String result;
        logger.debug("start upload。"+from + ","+id);

        logger.debug(apList.length);

        result = JsonUtil.SendJsonResponse(true, "success");
        reponse.setContentType("text/html; charset=utf-8");
        reponse.setCharacterEncoding("utf-8");

        return new String(result.getBytes("utf-8"), "iso-8859-1");

	}

注意在springmvc-servlet.xml进行例如以下配置:json转化器配置

	<bean name="mappingJacksonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
				<value>application/json</value>
			</list>
		</property>
	</bean>

	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
				<ref bean="mappingxmlHttpMessageConverter" /><!-- xml转换器 -->
				<ref bean="stringHttpMessageConverter" /><!-- xml转换器 -->

			</list>
		</property>
		<!--property name="messageConverters"> <list> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" 
			/> <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" 
			/> <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" 
			/> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
			<property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> 
			</list> </property> </bean> </list> </property -->
	</bean>

class SnapInfo
类SnapInfo定义的时候记得要构件一个空函数的构造函数,不然会报一下错误!

JsonMappingException: No suitable constructor found for type [simple type, class ]: can not instantiate from JSON object



參考文档:
http://www.bejson.com/
http://www.w3school.com.cn/jquery/ajax_post.asp
http://keleyi.com/a/bjac/8p778pqo.htm
http://stackoverflow.com/questions/7625783/jsonmappingexception-no-suitable-constructor-found-for-type-simple-type-class
http://seaboycs.iteye.com/blog/1997635
http://greatpwx.iteye.com/blog/1974150

原文地址:https://www.cnblogs.com/wgwyanfs/p/7353754.html