如何将此YAML转换为JSON

时间:2015-12-02 17:01:31

标签: json yaml

我想将this YAML片段转换为有效的JSON:

apiVersion: v1
kind: Service
metadata:
  name: my-nginx-svc
  labels:
    app: nginx
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: nginx
---
apiVersion: v1
kind: ReplicationController
metadata:
  name: my-nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

---如何转换为JSON?

http://yamltojson.com/无法识别此YAML有效。

2 个答案:

答案 0 :(得分:1)

您的问题并未表明您是否尝试使用特定语言解决此问题。尽管Assaf说,这个一个有效的YAML流。 YAML规范说:

  

YAML 由零个或多个文档组成。后续文件需要某种分离标记线。如果文档未由文档结束标记行终止,则以下文档必须以指令结束标记行开头。 (http://www.yaml.org/spec/1.2/spec.html#id2801681

"指令结束标记线"是这样的:---。它之所以称之为是因为它出现在YAML文档开头的指令(例如%YAML 1.2)之后。但是指令列表可能是空的,因此---本身是指示文档开头的有效方式。

然而,没有标准的方法来表示JSON中的多个文档,因此如果能够实现这一点,完全取决于使用JSON文件的API。有一些common ways代表可能会或可能不再有效的JSON流,具体取决于消费数据的API是否理解它。例如,可能工作:

{
  "apiVersion": "v1",
  "kind": "Service",
  // ...
}
{
  "apiVersion": "v1",
  "kind": "ReplicationController",
  // ...
}

这被称为(有些人,无论如何)Line Delimited JSON

但同样,这完全取决于消费数据的API是否理解这种格式,而这种格式不是正式的,也不是官方的#34;规格。您应该查阅API文档或联系API的制造商,找出正确的方法来完成您尝试做的事情,如果可能的话。

答案 1 :(得分:0)

---...可能会出现在YAML文档的开头和结尾,分别表示其开头和结尾。 YAML格式的怪癖。

因此,您提供的片段实际上并不是有效的YAML。也许它的两个文件被连接起来了。