SpringMVC接收json字符串转为List对象(数组对象)

本来项目中的springmvc已配置好的,没有问题,但是今天突然有个需求,需要写一个接口接收json字符串自动转换为List对象,查了一下用@RequestBody就可以,但是我改了以后,调用接口就报415异常,于是继续百度,很多解决方都是修改pom.xml文件添加如下代码:
       <dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-core-lgpl</artifactId>  
            <version>1.8.1</version>  
         </dependency>  
  
  
        <dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-mapper-lgpl</artifactId>  
            <version>1.8.1</version>  
        </dependency></span> 

但是,我的项目没有使用maven,所以没有pom.xml文件,所以解决不了我的问题。最后看到一个解决方法,于是做了以下修改:

找到web.xml中springmvc的配置,classpath对应的文件,如下:

    <servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
sevlet-context.xml中我原来的配置是这样的:

	 <bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<bean
					class="org.springframework.http.converter.StringHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							<value>text/plain;charset=UTF-8</value>
						</list>
					</property>
				</bean>				
			</list>
		</property>
	</bean> 
修改成如下代码:

	 <bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>				
				 <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							 <value>text/plain;charset=UTF-8</value>
							 <value>application/json;charset=UTF-8</value>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
修改后启动服务器异常:

java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapper

查了一下说是缺失jackson的jar包,json字符串和java对象转化必须要有jackson-core-asl、jackson-mapper-asl的jar包,我项目的中原有的jackson包只有jackson-annotations、jackson-core、jackson-databind,把缺失的jackson-core-asl、jackson-mapper-asl的jar包加到项目中以后,服务正常启动了。

这样改完以后,调接口发现返回的json字符串自动加了双引号,不能用json解析了。
经查,是springMVC中使用@ResponseBody注解时会强制返回json格式,在返回字符串时会默认加上双引号。所以要这样改

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				 <bean class="org.springframework.http.converter.StringHttpMessageConverter">
				        <property name="supportedMediaTypes">
						<list>
							 <value>text/plain;charset=UTF-8</value>
							 <value>application/json;charset=UTF-8</value>
						</list>
					</property>
				 </bean>
				 <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
					<property name="supportedMediaTypes">
						<list>
							 <value>text/plain;charset=UTF-8</value>
							 <value>application/json;charset=UTF-8</value>
						</list>
					</property>
				</bean>
			</list>
		</property>
	</bean>
但是,我调接口传了json数组的字符串以后,接口中的List并没有转换成对象,List中是Map对象,又查了一下,将List<User>改为User[]数组就可以了,具体原因不清楚。。

参考链接

http://xiaoyaozjl.iteye.com/blog/1468600

https://www.cnblogs.com/cainiao-Shun666/p/6557618.html

http://blog.csdn.net/lutinghuan/article/details/46820023





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值