import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class ParamConverter {
public static final String DEFAULT_PLACEHOLDER_PREFIX = "${";
public static final String DEFAULT_PLACEHOLDER_SUFFIX = "}";
public static String paramConverter(String paramTemplet,String data ){
try {
int start = paramTemplet.indexOf(DEFAULT_PLACEHOLDER_PREFIX);
if(start == -1){
return paramTemplet;
}
StringBuilder result = new StringBuilder(paramTemplet);
while(start != -1){
int end = result.indexOf(DEFAULT_PLACEHOLDER_SUFFIX);
String placeholder = result.substring(start + DEFAULT_PLACEHOLDER_PREFIX.length(),end);
String replaceContent="";
if(placeholder.trim().isEmpty()){
replaceContent="";
}else{
String[] splits = placeholder.split("\\.");
String path = "$";
for(int i=1; i<splits.length; i++){
path = path+"."+splits[i];
}
replaceContent = (String) JSONPath.read(data,path);
}
result.replace(start,end + DEFAULT_PLACEHOLDER_SUFFIX.length(),replaceContent);
start = result.indexOf(DEFAULT_PLACEHOLDER_PREFIX, start + replaceContent.length());
}
return result.toString();
} catch (Exception e) {
e.printStackTrace();
log.error("参数转换器调用报错{},paramTemplet:{},data:{}",e.getMessage(),paramTemplet,data);
return null;
}
}
}