如何将此YAML转换为JSON

如何将此YAML转换为JSON,json,yaml,Json,Yaml,我想将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-

我想将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

无法识别此YAML是有效的。

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


因此,您给出的代码片段实际上不是有效的YAML。可能是两个文件连接在一起了

您的问题没有表明您是否试图用特定的语言解决此问题。不管阿萨夫怎么说,这是一个有效的YAML流。YAML规范规定:

YAML流由零个或多个文档组成。后续文档需要某种分隔标记线。如果文档未以文档结束标记行结束,则以下文档必须以指令结束标记行开始。()

“指令结束标记行”是这样的:
--
。之所以叫它,是因为它位于YAML文档开头的指令(例如,
%YAML 1.2
)之后。但是指令列表可能是空的,因此
--
本身是指示文档开始的有效方式

但是,在JSON中没有表示多个文档的标准方法,因此是否以及如何实现这一点完全取决于使用JSON文件的API。根据使用数据的API是否理解JSON流,有一些JSON流可能会再次工作,也可能不会再次工作。例如,这可能会起作用:

这就是所谓的(无论如何,有些人)


但同样,这完全取决于使用数据的API是否理解这种格式,而这种格式不是正式或“官方”规范。如果可能的话,您应该查阅API文档或联系API的制造商,以找到正确的方法来完成您正在尝试的操作。

如果我必须在一个文件中将此连接版本发送给使用它的工具(在我的例子中是Kubernetes),那么什么是等效的JSON给定的YAML是绝对有效的YAML流。根据规范:“YAML流由零个或多个文档组成。后续文档需要某种分隔标记行。如果文档未以文档结束标记行结束,则以下文档必须以指令结束标记行开始。”
--
是“指令结束标记行”指令列表可能为空,因此上述YAML是有效的YAML流。Ruby的
YAML.load\u stream
对此没有问题。看一看:您是在尝试一次性解决这个问题,还是在尝试用特定的语言实现一个通用的解决方案?
{
  "apiVersion": "v1",
  "kind": "Service",
  // ...
}
{
  "apiVersion": "v1",
  "kind": "ReplicationController",
  // ...
}