Springmvc如何接收Json的request

前端通过ajax可以发送一个json给后端,这时候用springmvc如何处理呢?

1 前端代码要指定contenttype为json,并且通过stirngfy将json转为一个字符串

    contentType:"application/json",               
    data:JSON.stringify(jsondata), 

2 增加jackson的支持

	<!-- Jackson JSON Mapper -->
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>${jackson.version}</version>
		</dependency>

3 后端的contrller要用注解@RequestBody 支持

@RequestBody User jsondata

--在项目里部署后前端会报错400,后台报错为No suitable constructor found for type [simple type, class ]: can not instantiate from JSON object。问题原因有几种,1是前端的属性和后端的映射类的属性名不对 2是后端映射类是没有构造函数和public的方法 3 或者使用JsonProperty这个注解来处理

解决方案如下:http://stackoverflow.com/questions/7625783/jsonmappingexception-no-suitable-constructor-found-for-type-simple-type-class

http://stackoverflow.com/questions/12835911/jackson-jsonmappingexception-due-to-constructor

4 fecth api没有办法自动转换

前端使用了fetch api做异步交互,结果后端的类没有办法正确映射出对应的对象,报错The request sent by the client was syntactically incorrect.

前端发送的数据如下

Request Payload:
{name: "ha", id: 1}

这是因为前端使用body将对象放到request中

  opts.body=JSON.stringify(a);
  opts.method='POST';
  return fetch(url, opts)

所以后端参数映射必须也是body

@RequestBody A body

转载于:https://my.oschina.net/zimingforever/blog/737670

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值