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

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

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

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

    
		springmvc
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:servlet-context.xml
		
		1
	
	
		springmvc
		*.do
	
sevlet-context.xml中我原来的配置是这样的:

	 
		
			
				
					
						
							text/plain;charset=UTF-8
						
					
								
			
		
	 
修改成如下代码:

	 
		
							
				 
					
						
							 text/plain;charset=UTF-8
							 application/json;charset=UTF-8
						
					
				
			
		
	
修改后启动服务器异常:

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格式,在返回字符串时会默认加上双引号。所以要这样改


		
			
				 
				        
						
							 text/plain;charset=UTF-8
							 application/json;charset=UTF-8
						
					
				 
				 
					
						
							 text/plain;charset=UTF-8
							 application/json;charset=UTF-8
						
					
				
			
		
	
但是,我调接口传了json数组的字符串以后,接口中的List并没有转换成对象,List中是Map对象,又查了一下,将List改为User[]数组就可以了,具体原因不清楚。。

参考链接

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

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

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





你可能感兴趣的:(java技术)