YAML Json多条线路

时间:2015-01-04 09:55:58

标签: json yaml

让我们看看以下YAML定义:

#yaml
---
user1:
    name: "User name"
    age: "adf"
    address:
        street: "some street"
        no: "23"
        postcode: "2341234"

user2: {name: "User name", age: "adf", address: { street: "some street", no: "23",  postcode: "2341234"}}

user1 user2 定义完全相同。 我有时更喜欢user2风格,但是当定义变得太长时,将所有内容放在一行中就会出现问题。

有没有办法在多线级别上混合使用JSON样式? 类似的东西:

user3: {name: "User name", age: "adf",
            address: { street: "some street", no: "23",  postcode: "2341234"}
       }

1 个答案:

答案 0 :(得分:1)

是的,但是,您的编程语言或解析器实现可能不支持此语法。

实际上,你可以做到这一点,不过我相信这条线应该格式正确这取决于您使用的解析器/编程语言以及它的规则是否严格或灵活。

根据YAML flow stylesYAML flow mappingsYAML docs, Example 2.6. Mapping of Mappings

Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {
  hr: 63,
  avg: 0.288
}

为了验证我可能我只是把这个YAML(我把这个代码没有正确格式化,以确保绝对):

---
user1:
    name: "User name"
    age: "adf"
    address:
        street: "some street"
    no: "23"
    postcode: "2341234"

user2: {name: "User name", age: "adf", address: { street: "some street", no: "23",  postcode: "2341234"}}

user3: {name: "User name", age: "adf",
        address: { street: "some street", no: "23",  postcode: "2341234"}
    }

...到几个在线YAML验证器。

其中一些验证成功:

下一个没有:

Ruby语言(我没有通过Perl检查过,可能是其中一些在线验证器为我做了这个)允许这种表示法。请记住,您的编程语言/解析器可能对语法敏感,因此此代码将是错误的

就个人而言,我不会混淆不同的风格。我想到的最好的方法是将一些行转换为 flow 样式,其中一些行转换为 plain

user3:
    name: "User name",
    age: "adf",
    address: { street: "some street", no: "23",  postcode: "2341234" }