springboot @RequestBody和http请求参数首字母大写


    与第三方平台合作中,经常会遇到API中定义首字母大写,最近刚好又又又碰到了,记录下~~

@RequestBody

虽然在返回值对象中将参数名首字母大写,但是API返回值中每个参数名还是小写!
原因:spring使用HttpMessageConverter将返回实体转换为json
解决方法:返回对象各个参数使用fasterxml的@JsonProperty

public class ResponseVo {
	
	@JsonProperty(value = "Code")
	private String code;
	
	// 省略getter,setter
}

http请求 RestTemplate传参

项目中使用RestTemplate将消息推送到第三方平台,也是将传参首字母大写,但第三方返回参数异常!
原因:使用fastjson的JSONObject.toJSONString(vo)将参数名大写自动转换为小写了!
解决方法:传参对象各个参数使用fastjson的@JSONField

public class RequestVo {
   
   @JSONField(name = "Code")
   private String code;
   
   // 省略getter,setter
}

RestTemplate调用伪代码如下:

//将对象转换为json字符串
String bodyJson = JSONObject.toJSONString(requestVo); 

// 推送到处方审核平台
LinkedMultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.put("Content-Type", Collections.singletonList("application/json;charset=UTF-8"));
headers.add("AppId", "lizzy");
HttpEntity<String> request = new HttpEntity<String>(bodyJson, headers);
ResponseEntity<String> retObj = restTemplate.postForEntity(pushUrl, request, String.class);
// {"Code": -1, "Msg": "111", "Data": {}}
JSONObject responseBody = JSONObject.parseObject(retObj.getBody());
// ... 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值