import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * 字符串和map转换工具类
 */
public class MapUtil {

    /**
     * Map对象转成String，编码默认为unicode.
     *
     * @param map map
     * @return 字符串
     */
    public static String map2string(Map<String, String> map) {
        return map2String(map, true);
    }

    /**
     * Map对象转成String，指定是否需要unicode.
     *
     * @param map map
     * @param unicode 是否需要unicode.
     * @return 字符串
     */
    public static String map2String(Map<String, String> map, boolean unicode) {
        if (map == null) {
            return StringUtils.EMPTY;
        }
        Map<String, String> newMap = new HashMap<String, String>();

        for (Map.Entry<String, String> entry : map.entrySet()) {
            if (StringUtils.isBlank(entry.getKey())) {
                continue;
            } else {
                newMap.put(entry.getKey(),
                        StringUtils.defaultIfBlank(entry.getValue(), StringUtils.EMPTY));
            }
        }

        return PropertiesUtil.convert2String(newMap, unicode);
    }

    /**
     * string转成Map
     *
     * @param str 字符串
     * @return 结果map
     */
    public static Map<String, String> string2map(String str) {
        if (StringUtils.isBlank(str)) {
            return new HashMap<String, String>();
        }

        return PropertiesUtil.restoreMap(str);
    }
}
