如何从多个Yaml文件每个Yaml文件具有不同的架构中检索固定键的值?

问题描述

我的系统中有以下类型的YAML文件。从每个yaml文件中,我想检索与 sql 键对应的值。该密钥可以多次出现,也可以根本不出现在yaml文件中。所有这些yaml文件可能都没有相同的结构。

有关yaml文件的一些信息-

  1. 所有yaml文件都具有 mainComponent ,并且sql密钥仅在该组件中存在。

  2. 所有yaml文件具有与主要组件相同级别的 secondaryComponent

  3. sql 键之前,我们在同一组件中具有 type:executesql

  4. 查询也可以是多行的(请参见示例3)。

示例1-

mainComponent:
  basic:
    individual:
    - sedan
    groups:
    - normal
    - Premium
  user:
    local: john sNow
    outsider: virat kohli
  MysqLComponent:
    name: MysqLComponent
    type: executesql
    sql: select name,salary from employee
secondryComponent:
  Mod:
    permissions:
      test: true
    inheritance:
    - Premium
  default:
    permissions: abc
    inheritance: xyz

在这里,我要提取 sql:选择员工的姓名,工资

示例2-

mainComponent:
  basic:
    individual:
    - sedan
    groups:
    - normal
    - Premium
  group:
    you: john 
    me: sNow
  yoursqlComponent:
    name: yoursqlComponent
    type: executesql
    sql: select name,salary from xyz
  oursqlComponent:
    name: oursqlComponent
    type: executesql
    sql: select name,salary from zbc
secondryComponent:
  God:
    permissions:
      test: true
    inheritance:
    - Premium
  default:
    permissions: abc
    inheritance: xyz

在这里,我要提取 sql:从xyz中选择姓名,薪水 sql:从zbc中选择名称,薪金

示例3-

mainComponent:
  basic:
    individual:
    - sedan
    groups:
    - normal
    - Premium
  group:
    you: john 
    me: sNow
  multilinesqlComponent:
    name: yoursqlComponent
    type: executesql
    sql: |-
      select name,salary 
      from xyz
      where id = 1

secondryComponent:
  God:
    permissions:
      test: true
    inheritance:
    - Premium
  default:
    permissions: abc
    inheritance: xyz

可以有多行查询,将显示如上所示。 在这里,我要提取选择姓名,薪水 来自xyz 其中id = 1

示例4-

mainComponent:
  basic:
    individual:
    - sedan
    groups:
    - normal
    - Premium
  user:
    local: john sNow
    outsider: virat kohli
secondryComponent:
  Mod:
    permissions:
      test: true
    inheritance:
    - Premium
  default:
    permissions: abc
    inheritance: xyz

这里没有要提取内容,因为没有没有sql

此外,我有一对键值对,它是类型:executesql ,肯定会出现在 sql 键和在同一组件下。可以使用此信息来获取对应的 sql 键的值吗?我该如何提取呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)