如何在yaml中的对象内嵌套数组?

时间:2019-03-13 10:07:36

标签: json yaml

假设您在YAML中有一个名为{something”的Map<String, Object>

something:

和相应的JSON应该如下所示: json

 "something": {
      "else": "then",
      "array": [
         "element in array"
       ]
    } 

因此,此Yaml规范可能是:

something:
  else: then
  array: 
    - element in array

但是由于something是地图,它不允许我这样做

array: 
  - element in array

或这个

array: ['element in array']

所以问题是,考虑到somethingMap<String, Object>,是否有可能获得上述JSON的Yaml?

这与为OpenServiceBroker API的实现定义ServiceCatalogDefinition有关。

OSB Catalog using Yaml

OSB Catalog json looks like this

我试图根据需要制作上面链接中架构中提到的“属性”。 为此,我需要使其像这样返回json:

"properties" : {
  "someProperty" : {
      "description": "description",
      "type": "string"
   },
  "required": [
    "someProperty"
   ]    
}

然后yaml在我的应用程序中进行验证。yml抛出注释中提到的错误

2 个答案:

答案 0 :(得分:0)

使用网站json2yaml,您会收到YAML:

---
something:
  else: then
  array:
  - element in array

来自json:

{  
  "something": {
      "else": "then",
      "array": [
         "element in array"
       ]
    } 
}

与您相比,我认为您的“-”必须与“数组”处于同一级别。

答案 1 :(得分:0)

您需要做两件事:

  • 使JSON有效,例如通过插入逗号(如@flyx所建议)并在根级对象周围添加花括号:

    { 
      "something": {
        "else": "then",
        "array": [
          "element in array"
        ]
      } 
    }
    
  • 将普通标量(即不带引号)映射键something更改为双引号标量:

    { 
      "something": {
        "else": "then",
        "array": [
          "element in array"
        ]
      } 
    }
    

由于从所有实际目的出发,YAML实际上都是JSON的超集(自2009年以来的YAML 1.2),因此您无需执行其他任何操作。当然,您可以同时使用YAML加载程序和JSON解析器阅读以上内容。