Java Yml格式转换为Properties

使用Java对yaml和properties互转,保证顺序、实测无BUG版本 阅读详情

Yml格式文件转换为Properties格式

问题引入

使用在线的yml转换properties, 发现有属性内容漏了,网站地址https://tooltt.com/yaml2properties/。
于是自己动手写个转换工具类,自测过多个 yml 文件,目前没发现遗漏的。

需要转换的yaml文件如下

spring:
  application:
    name: xtoon-sys-server
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
        enabled: true
  boot:
    admin:
      client:
        url: http://localhost:5001
        username: admin
        password: admin
        instance:
          prefer-ip: true

management:
  health:
    redis:
      enabled: false
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"

在线转换网站转换的结果

spring.application.name=xtoon-sys-server
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.file-extension=yaml
spring.boot.admin.client.url=http://localhost:5001
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*

正确的转换结果应该如下

spring.application.name=xtoon-sys-server
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.enabled=true
spring.boot.admin.client.url=http://localhost:5001
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin
spring.boot.admin.client.instance.prefer-ip=true
management.health.redis.enabled=false
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*

在线网站转换结果截图如下
在这里插入图片描述
对比原始文本和转换结果,发现少了几个属性

spring.cloud.nacos.config.enabled=true
spring.boot.admin.client.instance.prefer-ip=true
management.health.redis.enabled=false

这几个结果有些特征,value值是boolean类型的。不知道还有没有其它类型的数据会有遗漏的?

转换代码

导入yaml读取jar

<dependency>
      <groupId>org.yaml</groupId>
      <artifactId>snakeyaml</artifactId>
      <version>1.33</version>
 </dependency>

Java 代码

package com.scd.tool;

import org.yaml.snakeyaml.Yaml;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;

/**
 * @author James
 */
public class YamlToProperties {

    public static void main(String[] args) {
        Yaml yaml = new Yaml();
        String filePath = "file/yaml/bootstrap.yml";
        try (InputStream inputStream = new FileInputStream(filePath)) {
            Object object = yaml.load(inputStream);
            List<String> resultList = travelRootWithResult(object);
            System.out.println(resultList);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static List<String> travelRootWithResult(Object object) {
        List<String> resultList = new ArrayList<>();
        if (object instanceof LinkedHashMap) {
            LinkedHashMap map = (LinkedHashMap) object;
            Set<Object> keySet = map.keySet();
            for (Object key : keySet) {
                List<String> keyList = new ArrayList<>();
                keyList.add((String) key);
                travelTreeNode(map.get(key), keyList, resultList);
            }
        }
        return resultList;
    }
    

    private static void travelTreeNode(Object obj, List<String> keyList, List<String> resultList) {
        if (obj instanceof LinkedHashMap) {
            LinkedHashMap linkedHashMap = (LinkedHashMap) obj;
            linkedHashMap.forEach((key, value) -> {
                if (value instanceof LinkedHashMap) {
                    keyList.add((String) key);
                    travelTreeNode(value, keyList, resultList);
                    keyList.remove(keyList.size() - 1);
                } else {
                    StringBuilder result = new StringBuilder();
                    for (String strKey : keyList) {
                        result.append(strKey).append(".");
                    }
                    result.append(key).append("=").append(value);
                    System.out.println(result);
                    resultList.add(result.toString());
                }
            });
        } else {
            StringBuilder result = new StringBuilder();
            result.append(keyList.get(0)).append("=").append(obj);
            System.out.println(result);
            resultList.add(result.toString());
        }
    }
}

运行结果如下,对比之后发现没有出现遗漏的

spring.application.name=xtoon-sys-server
spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.enabled=true
spring.boot.admin.client.url=http://localhost:5001
spring.boot.admin.client.username=admin
spring.boot.admin.client.password=admin
spring.boot.admin.client.instance.prefer-ip=true
management.health.redis.enabled=false
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*

大家使用的时候只需要改一下filePath

代码解读

可以把yml 看成多个树,问题就转换成了遍历树的问题,我们需要获取树的路径以及子节点。树的路径是properties的key, 叶子节点是properties的value

yaml文件格式转properties格式 【代码】yaml文件格式转properties格式。 阅读详情

相关推荐

yml在线格式转换工具(properties)

https://www.toyaml.com/index.html

专注基础架构领域 1万+

在线yml和properties相互转换

除了yml和properties互转之外,还可以生成代码、sql转json等,可以去用一下,用爱发电,感谢支持!

欢迎光临 8526

GraphRAG 与 HippoRAG 深度对比:在 RAGFlow 中如何选择知识图谱方案?

本文深入对比了GraphRAG与HippoRAG在RAGFlow中的知识图谱构建方案,分析了两者在技术架构、资源消耗和场景适配性上的核心差异。GraphRAG适合需要快速响应和资源有限的场景,而HippoRAG则更适用于精确关系推理的专业领域。文章还提供了RAGFlow的演进路线和选型决策框架,帮助架构师根据实际需求做出合理选择。

weixin_27889245的博客 246

java yaml转properties工具类

java yaml转properties工具类 yaml文件转properties文件 yaml字符串转properties字符串 yaml转Map

没啥简介 9462

6.4 构网型储能的需求与配置

摘要: 构网型储能是新型电力系统的关键支撑技术,通过提供电压/频率形成、惯性和稳定控制能力,解决同步机退出导致的系统稳定性问题。其配置需遵循三大原则:1)容量配置以支撑需求为主导,兼顾能量服务;2)优先布局于电网薄弱点、稳定问题突出区域;3)采用自适应控制策略实现全工况优化。核心应用场景包括新能源送出通道稳定、负荷中心调频、黑启动电源等。规划方法需结合系统分析、量化指标和成本效益评估,实现技术经济最优。未来需重点关注构网/跟网混合系统的临界容量占比及自适应控制技术发展。

技术工作者 1140

C++ 工程实践(9):数据抽象

陈硕 (giantchen_AT_gmail)http://blog.youkuaiyun.com/Solstice  http://weibo.com/giantchen陈硕关于 C++ 工程实践的系列文章: http://blog.youkuaiyun.com/Solstice/category/8

陈硕的Blog 1万+

17 Properties与yml

这两种配置文件在使用springboot时需要配置,而任何语言都有Properties配置文件并提供类供用户使用。 各种语言都有自己所支持的配置文件,方便用户能直接在配置文件中改变变量值,java的配置文件为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释。而且有类Java.util.Properties来读取该配置文件。它继承自H...

Michaelia_hu的博客 265

AI赋能工业自动化:传感器大数据实战

工业自动化中AI与传感器大数据的结合,显著提升了生产效率与可靠性。关键技术包括实时数据处理、边缘计算和数字孪生,未来将进一步向自主决策系统演进。

AFAGA_x的博客 414

springboot整合常见问题(一)将application.properties文件更改为application.yml文件

properties改为yml

Garnett_zk的博客 3415

用KalmanNet搞定非线性状态估计:当卡尔曼滤波遇上神经网络

本文深入探讨了KalmanNet如何将神经网络与卡尔曼滤波结合,以解决非线性状态估计中的模型失配和噪声不确定性问题。通过保留经典滤波框架并用RNN学习卡尔曼增益,该方法在无人机导航、机器人定位等场景中实现了模型驱动与数据驱动的优势互补,提升了估计的鲁棒性和灵活性。

mango的博客 309

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 552

Spring Boot -- 两种应用配置文件的编写方式 & 两种读取自定义配置方式

常用配置 application.properties server.port 启动端口,默认8080 server.servlet.context-path 应用上下文,相当于为当前的应用接口加了一个统一的前缀。当有多个应用且都有同一个 /firstrequest 接口时,就是通过应用上下文进行区分的 logging.file.name=d:/logs/myspringboot.log 应用输出日志的目录,配置后日志不仅在控制台输出,还会输出到指定的日志文件 logging.level.root=

支棱起来 682

零基础教你学RDMA驱动开发:从入门到精通--第6章 内存管理与DMA映射​6.2 DMA地址转换:内核dma_map_single()与硬件IOVA(I/O虚拟地址)​

本文深入探讨RDMA驱动中DMA地址转换机制,重点分析内核dma_map_single()函数与硬件IOVA的作用。主要内容包括:1)DMA地址转换的必要性,解决CPU虚拟地址与HCA设备DMA地址的空间割裂问题;2)内核DMA映射机制实现原理,涵盖无IOMMU(直接物理地址映射)和有IOMMU(IOVA转换)两种场景;3)硬件IOVA的工作流程及其与RDMA内存注册的结合;4)RDMA驱动开发中的关键问题,如缓存一致性、映射方向错误、IOVA泄漏等;5)以mlx5驱动为例的实践分析。文章强调DMA地址转换

xiaoheshang_123的博客 239

spring boot 项目配置文件

格式类型:spring boot支持3种配置文件,分别是xx.properties,xx.yaml,xx.yml;1、创建application--test.yml---application--dev.yml---application--prod.yml,分别代表测试环境,开发环境,生产环境的配置文件。环境:测试环境,开发环境,生成环境;默认是8080,项目中端口是否要修改酌定决定,由研发总监指定,---也可以指定端口。3、作为开发人员根据实情用哪个环境的配置文件--在主要文件下增加使用的环境名称。

weixin_51482243的博客 699

理想L9高通QAM8797座舱域控制器全拆解|全网独家复现 硬件架构升级、电源散热优化、多屏低延迟交互、车机系统赋能高端智能座舱落地

随着智能汽车向舱驾一体、全域智能化、多模交互方向迭代,传统单一功能座舱芯片已无法满足多屏高刷渲染、全车AI语音、车内视觉感知、高速车载通信的叠加算力需求。2026款全新理想L9作为旗舰级智能SUV,全面搭载高通新一代旗舰座舱域控制器QAM8797,搭配自研马赫M100 AI芯片、国产车规主控芯片,构建起高性能、高可靠、低延迟的车载中央计算平台。

getusushu的博客 380

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

yml在线格式转换工具(properties)

但是Spring Boot项目配置项多,yml文件看起来不是很方便,这里博主找到了一款可以相互转换的工具,我们看一下效果。yml,即yaml文本格式文件的后缀名,yaml可以用来替代properties,配置文件短的情况下可读性更好一些。

weixin_46228563的博客 4672

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

yml和properties互转 java编码 YamlUtil

主要是看网上没有直接进行properties转yml的代码,于是就自己参考github上的一些,然后自己进行封装了一层 源码 import com.alibaba.fastjson.JSON; import xxxxxx.ConfigValueTypeEnum; import lombok.Data; import lombok.experimental.UtilityClass; import org.yaml.snakeyaml.Yaml; import java.util.*; import jav

zhouzhenyong的专栏 1652

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringBoot中.properties或.yml重点配置和pom.xml中依赖总结

application.properties或yml重点配置总结 application.properties和yml格式转换 格式在线转换工具 yml格式注意点: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 kye-value的关系使用冒号代表,格式为key: value, 注意冒号后面要加一个空格,不然解...

YOUNGljx的博客 1337

JSON数据格式:以及XML文件格式,YML文件格式,properties文件格式

JSON数据格式:以及XML文件格式,YML文件格式,properties文件格式 数据格式: json数据格式:属于轻量级数据格式,是javascript的一种描述数据的格式。具有易于解析,语法简单的特点,广泛应用与网络间的数据传输。 {"name":"Li","age":"18"} XML数据格式:属于重量级数据格式,在以前主要是用XML进行数据的传输,但他的格式比...

weixin_30536513的博客 336

springboot~application.properties和application.yml的使用

在springboot框架里进行项目开始时,我们在resource文件夹里可以存放配置文件,而格式可以有两种,properties和yml,前者是扁平的k/v格式,而后者是yml的树型结构,我们建议使用后者,因为它的可读性更强,如果现有是properties,也可以转换成yml格式,我们把properies里按.去拆分即可。 例如:下面是properties格式的配置 spring.dat...

weixin_34092370的博客 322

在线yml-properties相互转换

在线yaml转properties-在线properties转yaml-ToYaml.com自用

m0_73570288的博客 1918

properties转yml

分享一个在线properties转yml工具,也支持yml转properteis: http://toyaml.com/ 域名非常好记:to yaml .com yml,即yaml文本格式文件的后缀名,yaml可以用来替代properties,可读性更好一些。 目前springboot的配置文件已经同时支持properties和yaml格式。 properties中的格...

weixin_30472035的博客 247

在线YAML转Properties工具

在线YAML转Properties工具 在线YAML转Properties工具 YAML是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。 YAML:(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感 Propertie

Linux,Java,SpringBoot,Python,Lua略知一点 1万+

sprintboot读取自定义配置文件properties、yml、yaml,环境springboot2.4.4

我这里使用的是springboot2.4.4的版本,其他版本自测 在要赋值的Bean类上面添加注解,prefix是你配置的前缀 @ConfigurationProperties(prefix = "alipay") 再添加注解,注意是@PropertySource 不是@PropertySources,最后没有s @PropertySource(value = {"classpath:alipay.properties"}) 然后添加@Comment注解添加到IOC容器中,使用@Autowir

魑魅魍魉 466
上一篇: Java 与 Rust 性能对比
下一篇: window系统安装 NodeJS
Chengdu.S
博客等级 码龄9年 283粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chengdu.S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值