请求参数如下
这种复杂的参数体,最好通过将每个字段拆分成不同的子请求体,然后在请求的时候进行组装,上图的每个字段都可以单独拆分出来一个请求,最后可以拼接出不同的业务流程。
引入需要的jar包
通过Jackson typereference 泛型读取相关文件
读取json文件并替换变量
// 活动名称
public static HashMap
MapperUtil
HashMap
"src/main/resources/data/basic-parameter/activityName.json");
log.info("读取的活动名称相关json"+activityNameMap);
HashMap
activityNameMap.forEach((
(s, o) -> { // 遍历value以 { 和} 结尾的值
log.info("未转换前" + o);
if (Objects.nonNull(o)) {
String value = o.toString();
if (value.startsWith("${") && value.endsWith("}")) { //获取到的结果为: ${activityName}
String value1 = StringUtils.stripStart(value, "${"); // 去掉${--> activityName}
String value2 = StringUtils.stripEnd(value1, "}"); // 去掉} -->activityName
if ("activityName".equals(value2)) {
o = activityName;
}
}
}
newActivityName.put(s, o);
}
));
log.info("遍历后"+activityNameMap);
return newActivityName;
}
因为json中有值为null的参数,使用fastjson转换时,需要加 WriteMapNullValue
String jsOnString= JSONObject.toJSONString(bodyDepart, WriteMapNullValue);