ToolDeck

YAML sang JSON

Chuyển đổi YAML sang định dạng JSON

Thử ví dụ

Đầu vào YAML

Đầu ra JSON

Chạy cục bộ · An toàn để dán thông tin bí mật
JSON sẽ xuất hiện ở đây…
Thử thêm:YAML to XML

Chuyển đổi YAML sang JSON là gì?

Chuyển đổi YAML sang JSON biến đổi dữ liệu được viết bằng YAML (YAML Ain't Markup Language) thành JSON (JavaScript Object Notation). Cả hai định dạng đều biểu diễn dữ liệu có cấu trúc dưới dạng cặp khóa-giá trị, chuỗi và đối tượng lồng nhau, nhưng cú pháp khác nhau. YAML dùng thụt lề và dấu câu tối giản, trong khi JSON dùng dấu ngoặc nhọn, dấu ngoặc vuông và dấu nháy bắt buộc. Chuyển đổi giữa hai định dạng là tác vụ thường gặp khi di chuyển dữ liệu cấu hình giữa các hệ thống yêu cầu định dạng khác nhau.

YAML được thiết kế để con người dễ đọc. Nó hỗ trợ ghi chú, chuỗi nhiều dòng, anchor và alias — những tính năng không tồn tại trong JSON. Khi chuyển đổi YAML sang JSON, các tính năng đặc thù của YAML được giải quyết: anchor được mở rộng tại chỗ, ghi chú bị loại bỏ, và các khối nhiều dòng trở thành chuỗi đã được thoát ký tự. Đầu ra là JSON hợp lệ mà bất kỳ bộ phân tích JSON nào cũng có thể đọc được.

Đặc tả YAML 1.2 định nghĩa rõ ràng JSON là tập con của YAML, nghĩa là mọi tài liệu JSON hợp lệ đều là YAML hợp lệ. Chiều ngược lại không đúng. Các tài liệu YAML có ghi chú, anchor hoặc khóa phức tạp không có tương đương trực tiếp trong JSON và phải được đơn giản hóa trong quá trình chuyển đổi. Công cụ này xử lý việc chuyển đổi đó tự động, tạo ra JSON sạch và có định dạng tốt từ bất kỳ đầu vào YAML hợp lệ nào.

YAML 1.2 Specification — yaml.org →

Tại sao sử dụng công cụ chuyển đổi YAML sang JSON online?

Chuyển đổi YAML sang JSON bằng tay rất dễ gây lỗi, đặc biệt với các cấu trúc lồng nhau sâu hoặc giá trị nhiều dòng. Công cụ chạy trên trình duyệt cho kết quả tức thì và phát hiện lỗi cú pháp YAML trước khi chúng đến ứng dụng của bạn.

Chuyển đổi tức thì trong trình duyệt
Dán YAML và nhận đầu ra JSON đã định dạng trong vài mili giây. Không cần cài công cụ CLI, không cần bước build, không cần quản lý dependency.
🔀
Xử lý mọi cấu trúc YAML hợp lệ
Hỗ trợ ánh xạ lồng nhau, chuỗi, chuỗi nhiều dòng (khối nguyên văn và khối gấp), anchor, alias, khóa merge và tất cả các kiểu vô hướng YAML 1.2.
🔒
Giữ dữ liệu hoàn toàn riêng tư
Toàn bộ quá trình phân tích chạy cục bộ trong trình duyệt bằng JavaScript. Nội dung YAML của bạn không bao giờ được gửi lên server, đảm bảo an toàn cho các file cấu hình chứa thông tin xác thực hoặc đường dẫn nội bộ.
📋
Sao chép hoặc điều chỉnh định dạng đầu ra
Chuyển đổi giữa thụt lề 2 khoảng trắng và 4 khoảng trắng. Sao chép kết quả JSON vào clipboard chỉ với một lần nhấp để dùng trực tiếp trong code, yêu cầu API hoặc file cấu hình.

Các trường hợp sử dụng YAML sang JSON

Phát triển Frontend
Chuyển đổi file cấu hình YAML từ design system hoặc CMS sang JSON để các bundler JavaScript, REST API hoặc thư viện i18n yêu cầu đầu vào JSON có thể sử dụng.
Kỹ thuật Backend
Chuyển đổi application.yml của Spring Boot hoặc database.yml của Rails sang JSON để đưa vào deployment script, API gateway hoặc các dịch vụ chỉ chấp nhận cấu hình JSON.
DevOps và CI/CD
Chuyển đổi docker-compose.yml, GitHub Actions workflow hoặc Kubernetes manifest sang JSON cho các công cụ xác thực, policy engine như OPA hoặc debug với jq.
QA và Kiểm thử
Chuyển fixture kiểm thử dạng YAML thành payload JSON cho các công cụ kiểm thử API như Postman, Insomnia hoặc test suite tự động yêu cầu request body dạng JSON.
Kỹ thuật dữ liệu
Chuyển đổi định nghĩa pipeline dạng YAML (Airflow, dbt, Dagster) sang JSON để xác thực schema, xử lý theo chương trình hoặc tích hợp với metadata catalog.
Học tập và Tài liệu
Xem nhanh cách cấu trúc YAML ánh xạ sang tương đương JSON khi nghiên cứu định dạng cấu hình hoặc viết tài liệu.

Tài liệu tham khảo ánh xạ kiểu dữ liệu YAML sang JSON

Mỗi kiểu dữ liệu YAML ánh xạ sang một kiểu JSON cụ thể trong quá trình chuyển đổi. Bảng dưới đây cho thấy từng cấu trúc YAML cùng với đầu ra JSON tương ứng. Hiểu các ánh xạ này giúp bạn dự đoán dữ liệu YAML sẽ trông như thế nào sau khi chuyển đổi và tránh bất ngờ với các kiểu như boolean hoặc giá trị null.

Kiểu YAMLCú pháp YAMLĐầu ra JSON
Mappingname: Alice{ "name": "Alice" }
Sequence- apple\n- banana["apple", "banana"]
Stringgreeting: hello world"hello world"
Integercount: 4242
Floatratio: 3.143.14
Booleanactive: truetrue
Nullvalue: nullnull
Multiline (|)bio: |\n Line one\n Line two"Line one\nLine two\n"
Folded (>)note: >\n A long\n paragraph"A long paragraph\n"
Anchor/Alias&default\n <<: *defaultResolved inline (no $ref)

Cú pháp YAML và JSON

YAML và JSON biểu diễn cùng một mô hình dữ liệu nhưng với các quy tắc cú pháp khác nhau. Những khác biệt dưới đây giải thích tại sao một số tính năng YAML — như ghi chú và anchor — không có tương đương trong JSON.

YAML
Dùng thụt lề để lồng nhau (không có dấu ngoặc nhọn). Hỗ trợ ghi chú với #. Chuỗi thường không cần dấu nháy. Cho phép giá trị nhiều dòng với | (nguyên văn) và > (gấp) dưới dạng khối vô hướng. Hỗ trợ anchor (&name) và alias (*name) để tái sử dụng. Theo YAML 1.2, chỉ true và false được nhận dạng là giá trị boolean; các bộ phân tích YAML 1.1 cũ cũng chấp nhận yes, no, on và off, nhưng những giá trị này được coi là chuỗi thuần trong YAML 1.2.
JSON
Dùng dấu ngoặc nhọn và dấu ngoặc vuông để lồng nhau. Không có cú pháp ghi chú. Tất cả chuỗi phải được đặt trong dấu nháy kép. Không có chuỗi literal nhiều dòng — dùng chuỗi thoát \n thay thế. Không có cơ chế anchor hay alias. Giá trị boolean phải hoàn toàn là chữ thường: true và false. Tất cả các khóa phải là chuỗi có dấu nháy. Dấu phẩy thừa cuối cùng là không hợp lệ.

Ví dụ code

Dưới đây là các ví dụ thực tế để chuyển đổi YAML sang JSON theo chương trình. Mỗi ví dụ phân tích một chuỗi YAML và xuất ra JSON đã định dạng.

JavaScript (Node.js)
import { load } from 'js-yaml'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const json = JSON.stringify(load(yamlStr), null, 2)
console.log(json)
// → {
// →   "server": {
// →     "host": "localhost",
// →     "port": 8080,
// →     "ssl": true
// →   }
// → }
Python
import yaml, json

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: s3cret
"""

data = yaml.safe_load(yaml_str)
print(json.dumps(data, indent=2))
# → {
# →   "database": {
# →     "host": "db.example.com",
# →     "port": 5432,
# →     "credentials": {
# →       "user": "admin",
# →       "password": "s3cret"
# →     }
# →   }
# → }
Go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"gopkg.in/yaml.v3"
)

func main() {
	yamlData := []byte(`
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
`)

	var obj map[string]interface{}
	if err := yaml.Unmarshal(yamlData, &obj); err != nil {
		log.Fatal(err)
	}
	jsonBytes, _ := json.MarshalIndent(obj, "", "  ")
	fmt.Println(string(jsonBytes))
	// → { "services": { "web": { "image": "nginx:latest", "ports": ["80:80"] } } }
}
CLI (yq + jq)
# Convert a YAML file to JSON with yq
yq -o=json config.yaml > config.json

# Pipe YAML into yq for one-off conversion
echo "name: demo" | yq -o=json
# → { "name": "demo" }

# Python one-liner (no extra install on most systems)
python3 -c "import yaml, json, sys; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < config.yaml

Câu hỏi thường gặp

YAML có phải là superset của JSON không?
Có, kể từ YAML 1.2 (phát hành năm 2009). Mọi tài liệu JSON hợp lệ đều là YAML hợp lệ. Đặc tả YAML đã được cập nhật có chủ ý để đảm bảo tương thích hoàn toàn với JSON. Tuy nhiên, chiều ngược lại không đúng — các tính năng YAML như ghi chú, anchor và khóa không có dấu nháy không có tương đương trong JSON.
Ghi chú YAML sẽ bị xử lý như thế nào trong quá trình chuyển đổi?
Ghi chú bị loại bỏ. JSON không có cú pháp ghi chú, vì vậy mọi dòng bắt đầu bằng # trong đầu vào YAML đều bị mất trong quá trình chuyển đổi. Nếu bạn cần giữ lại ghi chú, hãy lưu file YAML gốc làm nguồn chính xác và tạo JSON từ đó khi cần.
Anchor và alias trong YAML được xử lý như thế nào?
Anchor (&name) và alias (*name) được giải quyết trong quá trình phân tích. Alias được thay thế bằng bản sao đầy đủ của dữ liệu được anchor. JSON kết quả không chứa tham chiếu nào — tất cả các giá trị được mở rộng tại chỗ. Khóa merge (<<: *name) cũng được giải quyết theo cách tương tự.
Việc chuyển đổi YAML sang JSON có làm mất dữ liệu không?
Đối với các giá trị dữ liệu, không. Tất cả các kiểu vô hướng YAML (chuỗi, số, boolean, null) đều có tương đương trực tiếp trong JSON. Những gì bị mất: ghi chú, chỉ thị tag, tên anchor và sự phân biệt giữa kiểu khối và kiểu flow. Nếu YAML của bạn sử dụng các tag tùy chỉnh (!!python/object, !!timestamp), chúng được giải quyết thành giá trị thuần hoặc có thể gây lỗi phân tích tùy theo bộ phân tích.
Tại sao boolean 'yes' trong YAML lại trở thành chuỗi trong JSON?
Công cụ này dùng js-yaml v4, tuân theo quy tắc giải quyết boolean YAML 1.2. Chỉ true và false (viết hoa hoặc thường tùy ý) được nhận dạng là boolean. Các giá trị như yes, no, on và off được coi là chuỗi thuần và xuất hiện dưới dạng chuỗi có dấu nháy trong đầu ra JSON. Nếu bạn thấy giá trị chuỗi không mong đợi thay vì boolean, hãy đổi sang true hoặc false trong nguồn YAML.
Kích thước file YAML tối đa mà công cụ này có thể xử lý là bao nhiêu?
Công cụ chạy trong trình duyệt, nên giới hạn phụ thuộc vào bộ nhớ khả dụng của thiết bị. Trong thực tế, các file lên đến vài megabyte chuyển đổi mà không gặp vấn đề. Với các file rất lớn (50 MB+), công cụ CLI như yq hoặc script Python với PyYAML sẽ đáng tin cậy hơn vì chúng có thể xử lý dữ liệu dạng luồng thay vì tải toàn bộ vào bộ nhớ cùng một lúc.
Chuỗi nhiều dòng trong YAML được chuyển đổi sang JSON như thế nào?
YAML có hai kiểu khối vô hướng nhiều dòng. Khối nguyên văn (|) giữ nguyên ký tự xuống dòng dưới dạng ký tự \n trong chuỗi JSON. Khối gấp (>) thay thế ký tự xuống dòng đơn bằng khoảng trắng, biến nhiều dòng thành một đoạn văn duy nhất. Cả hai kiểu đều thêm ký tự xuống dòng ở cuối theo mặc định, bạn có thể loại bỏ bằng chỉ thị chomping (|- hoặc >-).