Конвертація даних між різними форматами є поширеною задачею в програмуванні. Однією з таких конвертацій є перетворення YAML в JSON. YAML (YAML Ain’t Markup Language) і JSON (JavaScript Object Notation) – це два різних формати даних, які часто використовуються для збереження і обміну даними в програмах.
У цій статті ми розглянемо, як правильно виконати конвертацію YAML у JSON за допомогою Python, особливо з використанням бібліотеки PyYAML.
Що таке YAML і JSON?
YAML – це людино-читабельний формат обміну даними, який базується на структурах даних, подібних до мови програмування. Він дозволяє зручно зберігати інформацію у вигляді, зрозумілому для людей. JSON, з іншого боку, є форматом обміну даними, який базується на синтаксисі JavaScript. Він широко використовується у веб-розробці та API для передачі структурованих даних.
Як правильно конвертувати YAML у JSON з використанням Python?
Один з найпоширеніших способів конвертації YAML у JSON – це використання бібліотеки PyYAML разом із стандартною бібліотекою Python json.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import yaml import json def yaml_to_json(yaml_file, json_file): with open(yaml_file, 'r') as stream: try: data_map = yaml.safe_load(stream) with open(json_file, 'w') as output: json.dump(data_map, output, indent="") return True except yaml.YAMLError as exc: print(exc) return False # Використання функції для конвертації YAML у JSON yaml_to_json('input.yaml', 'output.json') |
У цьому коді ми відкриваємо YAML-файл за допомогою функції open()
у режимі читання. Потім ми використовуємо yaml.safe_load()
для завантаження даних з YAML-файлу у форматі словника Python. Після цього ми відкриваємо JSON-файл за допомогою open()
у режимі запису та використовуємо json.dump()
для запису даних у файл у форматі JSON зі збереженням відступів.
Щоб запустити цей код, потрібно мати встановлені бібліотеки PyYAML та json. Їх можна встановити за допомогою pip:
1 |
pip install PyYAML |
Приклад роботи
Нехай у нас є такий YAML-файл з назвою input.yaml
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
--- baselines: - baseline_name: Ubuntu STIG baseline source_benchmark_name: DISA STIG Ubuntu 20.04 LTS v1r7 in_scope_component: GOLDEN_BASE_AMI rules: - control_id: UBTU-20-010000 title: The Ubuntu operating system must provision temporary user accounts with an expiration time of 72 hours or less severity: medium description: blah blah required: true evidence: - tenable: scan_result long_description: blah blah blah |
Після виконання нашого коду буде створено JSON-файл output.json
з таким вмістом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "baselines": [ { "baseline_name": "ubuntu stig baseline", "source_benchmark_name": "DISA STIG Ubuntu 20.04 LTS v1r7", "in_scope_component": "GOLDEN_BASE_AMI", "rules": [ { "control_id": "UBTU-20-010000", "title": "blah" } ] } ] } |
Таким чином, ми успішно сконвертували дані з YAML у JSON за допомогою Python.