无需预定义结构即可动态解析 YAML 的简便方法

问题描述

为了为我正在处理的项目编写集成测试,我需要读取一个包含大量嵌套级别的 YAML 文件修改某些值并写回文件以防止有几个几乎没有区别的配置文件。 (因此我可以为每个测试更改具有不同值的相同配置文件)。但是编组和解组需要定义一个预定义的结构,否则我必须在运行时动态处理这些值。由于我有一个非常大的配置文件(400 行嵌套级别),其中包含很多嵌套结构,因此很难有预定义的结构。所以我必须动态处理这些值。但是当我有多个嵌套值时,这也可能是一项艰巨的任务。

例如,以下部分仅显示了我的配置文件的一部分。

admin:
  access_log_path: /dev/null
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 9000
bootstrap_extensions:
- name: envoy.bootstrap.wasm
  typed_config:
    '@type': type.googleapis.com/envoy.extensions.wasm.v3.WasmService
    singleton: true
    config:
      name: "singleton_service"
      root_id: "singleton_service"
      configuration: 
        "@type": type.googleapis.com/google.protobuf.StringValue
        value: |
          {
            "upstream_config": {
              "name": "outbound|443||su1.3scale.net","url": "https://su1.3scale.net","timeout": 20
            },"delta_store_config": {
              "capacity": 3,"periodical_flush": "60s","retry_duration": "30s","await_queue_capacity": 200,"flush_mode": "Default"
            }

          }
      vm_config:
        runtime: "envoy.wasm.runtime.v8"
        vm_id: "my_vm_id"
        code:
          local:
            filename: "/usr/local/bin/singleton_service.wasm"
        configuration: {}
        allow_precompiled: true

是否有一种简单的方法可以更改以下部分中 upstream_config json 字符串的值? (无需定义多个接口来读取每个嵌套级别)

解决方法

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

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

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