KCL JSON/YAML 配置数据一键集成 [一个自研编程语言能做什么?(系列 4)]

2023-05-30 14:39:06 +08:00
 peefy

什么是 KCL

Kusion 配置语言( KCL ) 是一个开源的基于约束的记录及函数语言。KCL 通过成熟的编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于构建围绕配置的更好的模块化、扩展性和稳定性,更简单的逻辑编写,以及更简单的自动化和生态工具集成。

简介

在 KCL 中,不仅可以将 KCL 编写的配置代码编译输出为 YAML 格式的数据,还可以将 JSON/YAML 等数据直接嵌入到 KCL 语言当中。

使用 KCL 进行数据集成

1. 获得示例

git clone https://github.com/KusionStack/kcl-lang.io.git/
cd ./kcl-lang.io/examples/data-integration

2. YAML 集成

我们可以运行以下命令来显示 KCL YAML 集成配置。

cat yaml.k
import yaml

schema Server:
    ports: [int]

server: Server = yaml.decode("""\
ports:
- 80
- 8080
""")
server_yaml = yaml.encode({
    ports = [80, 8080]
})

在上述代码中,我们通过 KCL 内置的 yaml 模块以及其中的 yaml.decode 直接完成 YAML 数据的集成,并且使用 Server schema 对集成的 YAML 数据直接进行校验。此外,我们可以使用 yaml.encode 完成 YAML 数据的序列化。

我们通过如下命令可以获得配置输出:

$ kcl yaml.k
server:
  ports:
    - 80
    - 8080
server_yaml: "ports:\n  - 80\n  - 8080\n"

3. JSON 集成

同样的,对于 JSON 数据,我们可以使用 json.encodejson.decode 函数以同样的方式进行数据集成。

我们可以运行以下命令来显示 KCL JSON 集成配置。

cat json.k
import json

schema Server:
    ports: [int]

server: Server = json.decode('{"ports": [80, 8080]}')
server_json = json.encode({
    ports = [80, 8080]
})

执行命令输出为:

$ kcl json.k
server:
  ports:
    - 80
    - 8080
server_json: "{\"ports\": [80, 8080]}"

小结

本文介绍了如何在 KCL 中进行数据集成,使用 KCL 内置的 yaml 和 json 包将 YAML 和 JSON 数据直接集成到 KCL 语言中,并使用相应的解码和编码功能对其进行验证和序列化。

590 次点击
所在节点    程序员
2 条回复
Masoud2023
2023-05-30 14:42:21 +08:00
思路很棒
peefy
2023-05-30 14:55:54 +08:00
@Masoud2023 感谢🙏

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/944193

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX