import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @Description: 转换成map的各种方法
* @author
* @date 2018年10月12日18:09:24
*/
public class MapUtil {
/**
* 将数组转map,其中数组->键,值填空
* @param arrayList
* @return
*/
public static Map<String, Object> copyPropertyToMap(String[] arrayList) {
Map<String, Object> map=new HashMap<String,Object>();
for (int i = 0; i <arrayList.length; i++) {
map.put(arrayList[i],"");
}
return map;
}
/**
* 将实体类对象中的数据按list中存在的存放到map中
* @param srcBean
* @param arrayList
*/
public static Map<String, Object> copyPropertyToMap(Object srcBean, String[] arrayList) {
Map<String, Object> map=new HashMap<String,Object>();
String jsonString = JSON.toJSONString(srcBean);
JSONObject json = JSON.parseObject(jsonString);
for (String s : arrayList) {
if (json.containsKey(s)) {
Object value = json.get(s);
map.put(s, value);
}
}
return map;
}
/**
* 将实体类对象中的数据按fieldToVariableMap转换后,再按list中存在的存放到map中
* @param srcBean
* @param fieldToVariableMap
* @param arrayList
*/
public static Map<String, Object> copyPropertyByEnumToMap(Object srcBean, Map<String,String> fieldToVariableMap,String[] arrayList) throws Exception{
Map<String, Object> map=new HashMap<String,Object>();
String jsonString = JSON.toJSONString(srcBean);
JSONObject json = JSON.parseObject(jsonString);
JSONObject targetJson= new JSONObject();
BeanUtils.copyProperties(targetJson,json);
for(String key:json.keySet()){
if(StringUtils.isNotBlank(fieldToVariableMap.get(key))&&!key.equals(fieldToVariableMap.get(key))){
targetJson.put(fieldToVariableMap.get(key),json.get(key));
}
}
for (String s : arrayList) {
if (targetJson.containsKey(s)) {
Object value = targetJson.get(s);
map.put(s, value);
}
}
return map;
}
/**
* 将文案内容中的变量替换
* @param valMap 变量及其变量值【非空】
* @param documentLeftPrefix 左侧占位符【可空】
* @param documentRightPrefix 右侧占位符【可空】
* @param docContent 含变量的文案内容【非空】
*/
public static String replaceDocContent(Map<String, Object> valMap, String documentLeftPrefix,String documentRightPrefix,String docContent) {
if (valMap != null && valMap.size() > 0) {
Iterator iterator = valMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = (Map.Entry<String, String>) iterator.next();
docContent = docContent.replaceAll(documentLeftPrefix+ entry.getKey() + documentRightPrefix, entry.getValue());
}
}
return docContent;
}
}