栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【JAVA】YML转Properties工具类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【JAVA】YML转Properties工具类

目录

一、题述

二、源码


一、题述

博主需要在java代码中,将yml转成properties格式的map

但是在网上找了一圈,没找到一个稍微好点的轮子,于是自己写个工具类

二、源码

实现思路:先转嵌套map,再将map转成properties格式。

需要maven依赖包:

		
            org.yaml
            snakeyaml
            1.29
        

源码:

import com.alibaba.fastjson.JSONObject;
import org.yaml.snakeyaml.Yaml;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
import java.util.linkedHashMap;
import java.util.Map;


public class YmlToProperties {

    public static void main(String[] args) {
        String path = "D:\admin-entry\src\main\resources\application.yml";

        linkedHashMap result = ymlToPorperties(path);

        System.out.println(new JSonObject(result));
    }

    public static linkedHashMap ymlToPorperties(String path) {
        linkedHashMap resultMap = null;
        Yaml yaml = new Yaml();
        FileInputStream in = null;
        try {
            in = new FileInputStream(path);
            linkedHashMap m = yaml.load(in);
            resultMap = mapToPorperties(m);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return resultMap;
    }

    public static linkedHashMap mapToPorperties(linkedHashMap m) {
        final linkedHashMap resultMap = new linkedHashMap<>();
        mapToPorperties(null, resultMap, m);
        return resultMap;
    }

    private static void mapToPorperties(String key, final linkedHashMap toMap, linkedHashMap fromMap) {
        Iterator> it = fromMap.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry entry = it.next();
            Object value = entry.getValue();
            if (value instanceof Map) {
                String relKey = entry.getKey();
                if (key != null) {
                    relKey = key + "." + entry.getKey();
                }
                mapToPorperties(relKey, toMap, (linkedHashMap) value);
            } else {
                toMap.put(key + "." + entry.getKey(), entry.getValue());
            }
        }
    }

}

代码中的fast-json用于打印清晰数据,不需要可干掉。

简单的嵌套yml转换是ok的,复杂的yml理论上来说应该也ok,博主目前没试过,有需求可留言。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号