Yaml - 如何在单行中编写映射

Yaml - how to write mapping(s) in single line

我有以下yaml。

version: "0.1"
services: 
  svc: 
    image: test
    networks: 
      - test_net_1
      - test_net_2
      - test_net_3

networkMapping: 
  test_net_1: 
    external: true
  test_net_2: 
    external: true
  test_net_3: 
    external: true

我想像下面这样在一行中重写 networkMapping

version: "0.2"
services: 
  svc: 
    image: test
    networks: ['test_net_1', 'test_net_2', 'test_net_3']

networkMapping: {{'test_net_1': {'external': true}}, {'test_net_2': {'external': true}}, {'test_net_3': {'external': true}}}
  

但是在 lint/parse 上 returns 就像这样

version: "0.2"
services: 
  svc: 
    image: test
    networks: 
      - test_net_1
      - test_net_2
      - test_net_3

networkMapping: 
  ? 
    test_net_1': 
      external: true
  : ~
  ? 
    test_net_2: 
      external: true
  : ~
  ? 
    test_net_3: 
      external: true
  : ~

它会导致应用程序出错 'invalid map key: map[interface {}]interface {}{"test_net_1":map[interface {}]interface {}{"external":true}}'。

我检查了双引号而不是单引号,也没有引号。但是没有运气:(。

我们可以通过将第一个和最后一个 {} 替换为 [] 来更改为关联数组,但应用需要它作为映射而不是关联数组。

想知道有没有人有类似的问题和解决办法?

非常感谢。

您使用了太多{}。你应该这样写:

networkMapping: {'test_net_1': {'external': true}, 'test_net_2': {'external': true}, 'test_net_3': {'external': true}}