我想将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有效。
答案 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。也许它的两个文件被连接起来了。