前端通过平台接口为参数绑定对象,后端收到打印出来的确实这样一个奇怪的字符串
-
@J_an 在 前端通过平台接口为参数绑定对象,后端收到打印出来的确实这样一个奇怪的字符串 中说:
@核桃酥 在 前端通过平台接口为参数绑定对象,后端收到打印出来的确实这样一个奇怪的字符串 中说:
@J_an 需要看你这个接口运行的时候看接口network接口里面具体的参数是什么样子
f12网络请求里是正常的json格式,我直接整个复制到本地调试都没问题
本地调试是这样:{
"params1": "111",
"params2": "111",
"params3.aaa": "111",
"params3.bbb": "111"
}
本地后端打印:
{"aaa":"111","bbb":"111"}部署到平台是这样:
平台后台日志:
map[aaa:111 bbb:111] -
代码是这样:
@Data
public class TESTDTO implements Serializable {
String params1;
String params2;
Map<String, String> params3 = new HashMap<>();public void setParams3(String params3) { System.out.println(params3); String json = params3.replace(" ", "").replace("<nil>", ""); JSONObject jsonObject = JSONObject.parseObject(json); jsonObject.forEach((k, v) -> { this.params3.put(k, (String) v); }); }
}
@GetMapping("/TEST")
public Result<?> TEST (TESTDTO testdto) {
return Result.ok("");
} -
直接用Map接收平台会打印报错这个是字符串:
Field error in object 'TESTDTO' on field 'params3': rejected value [map[aaa:111 bbb:111]]; codes [typeMismatch.TESTDTO.params3,typeMismatch.params3,typeMismatch.java.util.Map,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [TESTDTO.params3,params3]; arguments []; default message [params3]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Map' for property 'params3'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'java.util.Map' for property 'params3': no matching editors or conversion strategy found]