zoukankan      html  css  js  c++  java
  • yaml文件转properties和properties转yaml

    1. 首先要引入依赖  
    <dependency>
           <groupId>com.fasterxml.jackson.dataformat</groupId>
           <artifactId>jackson-dataformat-yaml</artifactId>
           <version>2.9.4</version>
    </dependency>
    
    <dependency>
           <groupId>com.fasterxml.jackson.dataformat</groupId>
           <artifactId>jackson-dataformat-properties</artifactId>
           <version>2.9.4</version>
    </dependency>

      2.直接上工具类

      

    package config.center.config.utils;
    
    import com.fasterxml.jackson.core.JsonParser;
    import com.fasterxml.jackson.core.JsonToken;
    import com.fasterxml.jackson.dataformat.javaprop.JavaPropsFactory;
    import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
    import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
    import com.fasterxml.jackson.dataformat.yaml.YAMLParser;
    
    import java.io.*;
    import java.nio.charset.Charset;
    import java.util.LinkedList;
    import java.util.List;
    
    /**
     * @program: config
     * @description: 转换工具类
     * @author: xujingyang
     * @create: 2019-03-27 12:16
     **/
    public class TransferUtils {
    
        private static final String ENCODING = "utf-8";
    
        public static void yml2Properties(String path) {
            final String DOT = ".";
            List<String> lines = new LinkedList<>();
            try {
                YAMLFactory yamlFactory = new YAMLFactory();
                YAMLParser parser = yamlFactory.createParser(
                        new InputStreamReader(new FileInputStream(path), Charset.forName(ENCODING)));
    
                String key = "";
                String value = null;
                JsonToken token = parser.nextToken();
                while (token != null) {
                    if (JsonToken.START_OBJECT.equals(token)) {
                        // do nothing
                    } else if (JsonToken.FIELD_NAME.equals(token)) {
                        if (key.length() > 0) {
                            key = key + DOT;
                        }
                        key = key + parser.getCurrentName();
    
                        token = parser.nextToken();
                        if (JsonToken.START_OBJECT.equals(token)) {
                            continue;
                        }
                        value = parser.getText();
                        lines.add(key + "=" + value);
    
                        int dotOffset = key.lastIndexOf(DOT);
                        if (dotOffset > 0) {
                            key = key.substring(0, dotOffset);
                        }
                        value = null;
                    } else if (JsonToken.END_OBJECT.equals(token)) {
                        int dotOffset = key.lastIndexOf(DOT);
                        if (dotOffset > 0) {
                            key = key.substring(0, dotOffset);
                        } else {
                            key = "";
                            lines.add("");
                        }
                    }
                    token = parser.nextToken();
                }
                parser.close();
    
                System.out.println(lines);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
        public static void properties2Yaml(String path) {
            JsonParser parser = null;
            JavaPropsFactory factory = new JavaPropsFactory();
            try {
                parser = factory.createParser(
                        new InputStreamReader(new FileInputStream(path), Charset.forName(ENCODING)));
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            try {
                YAMLFactory yamlFactory = new YAMLFactory();
                YAMLGenerator generator = yamlFactory.createGenerator(
                        new OutputStreamWriter(new FileOutputStream(path), Charset.forName(ENCODING)));
    
                JsonToken token = parser.nextToken();
    
                while (token != null) {
                    if (JsonToken.START_OBJECT.equals(token)) {
                        generator.writeStartObject();
                    } else if (JsonToken.FIELD_NAME.equals(token)) {
                        generator.writeFieldName(parser.getCurrentName());
                    } else if (JsonToken.VALUE_STRING.equals(token)) {
                        generator.writeString(parser.getText());
                    } else if (JsonToken.END_OBJECT.equals(token)) {
                        generator.writeEndObject();
                    }
                    token = parser.nextToken();
                }
                parser.close();
                generator.flush();
                generator.close();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
    }

      

      转换起来还是很方便的~

  • 相关阅读:
    第三章-5、图片左右滑动(动态面板引导页面)
    第三章-8、抽屉导航(动态面板)
    第三章-7、没做
    第三章-6、失败
    第三章-4、瀑布流(动态面板)
    第三章-3、跳转页面&返回页面
    第三章-2、设置条件进行外部连接,跳转页面
    第三章-1、界面原件属性使用(登录界面)
    6、如何将excel表格中的图片批量居中对齐
    React Native
  • 原文地址:https://www.cnblogs.com/xujingyang/p/10613206.html
Copyright © 2011-2022 走看看