ToolDeck

YAML เป็น JSON

แปลง YAML เป็นรูปแบบ JSON

ลองตัวอย่าง

อินพุต YAML

เอาต์พุต JSON

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ
JSON จะปรากฏที่นี่…
ลองดูด้วย:YAML to XML

การแปลง YAML เป็น JSON คืออะไร?

การแปลง YAML เป็น JSON คือการเปลี่ยนข้อมูลที่เขียนใน YAML (YAML Ain't Markup Language) ให้อยู่ในรูปแบบ JSON (JavaScript Object Notation) ทั้งสองรูปแบบแสดงข้อมูลที่มีโครงสร้างในลักษณะ key-value pairs, sequences และ nested objects เหมือนกัน แต่ใช้ไวยากรณ์ต่างกัน YAML ใช้การย่อหน้าและเครื่องหมายวรรคตอนน้อยที่สุด ส่วน JSON ใช้วงเล็บปีกกา วงเล็บเหลี่ยม และเครื่องหมายอัญประกาศบังคับ การแปลงระหว่างทั้งสองรูปแบบเป็นงานที่พบบ่อยเมื่อต้องย้าย configuration data ระหว่างระบบที่ต้องการรูปแบบต่างกัน

YAML ถูกออกแบบมาเพื่อให้มนุษย์อ่านได้ง่าย รองรับ comments, multiline strings, anchors และ aliases ซึ่งล้วนไม่มีใน JSON เมื่อแปลง YAML เป็น JSON ฟีเจอร์เฉพาะของ YAML เหล่านี้จะถูกแก้ไข: anchors จะถูกขยายแบบ inline, comments จะถูกทิ้ง และ multiline blocks จะกลายเป็น escaped strings ผลลัพธ์คือ JSON ที่ถูกต้องซึ่ง JSON parser ใดก็สามารถอ่านได้

ข้อกำหนด YAML 1.2 ระบุชัดเจนว่า JSON เป็น subset ของ YAML หมายความว่าเอกสาร JSON ที่ถูกต้องทุกอันก็เป็น YAML ที่ถูกต้องด้วย แต่ในทางกลับกันไม่เป็นความจริง เอกสาร YAML ที่ใช้ comments, anchors หรือ complex keys ไม่มีค่าเทียบเท่าโดยตรงใน JSON และต้องลดความซับซ้อนในระหว่างการแปลง เครื่องมือนี้จัดการการแปลงดังกล่าวโดยอัตโนมัติ ผลิต JSON ที่สะอาดและมีรูปแบบดีจาก YAML input ที่ถูกต้องใดก็ได้

YAML 1.2 Specification — yaml.org →

ทำไมต้องใช้เครื่องมือแปลง YAML เป็น JSON ออนไลน์?

การแปลง YAML เป็น JSON ด้วยมือเกิดข้อผิดพลาดได้ง่าย โดยเฉพาะกับโครงสร้างที่ซ้อนกันลึกหรือค่า multiline เครื่องมือบนเบราว์เซอร์ให้ผลลัพธ์ทันทีและตรวจจับข้อผิดพลาดไวยากรณ์ YAML ก่อนที่จะถึงแอปพลิเคชันของคุณ

แปลงได้ทันทีในเบราว์เซอร์
วาง YAML แล้วรับผลลัพธ์ JSON ที่มีรูปแบบในมิลลิวินาที ไม่ต้องติดตั้ง CLI tools ไม่มีขั้นตอน build ไม่มี dependencies ที่ต้องจัดการ
🔀
รองรับโครงสร้าง YAML ทุกรูปแบบ
รองรับ nested mappings, sequences, multiline strings (literal และ folded blocks), anchors, aliases, merge keys และประเภท scalar ทุกชนิดใน YAML 1.2
🔒
เก็บข้อมูลของคุณเป็นความลับ
การแยกวิเคราะห์ทั้งหมดทำงานในเบราว์เซอร์ของคุณด้วย JavaScript ไม่มีการส่ง YAML content ไปยังเซิร์ฟเวอร์ จึงปลอดภัยสำหรับ configuration files ที่มี credentials หรือ internal paths
📋
คัดลอกหรือปรับรูปแบบผลลัพธ์
สลับระหว่างการย่อหน้า 2 ช่องและ 4 ช่องได้ คัดลอก JSON ผลลัพธ์ไปยังคลิปบอร์ดด้วยคลิกเดียวเพื่อใช้โดยตรงในโค้ด, API requests หรือ config files

กรณีใช้งานการแปลง YAML เป็น JSON

Frontend Development
แปลง YAML configuration files จาก design system หรือ CMS เป็น JSON สำหรับ JavaScript bundlers, REST APIs หรือไลบรารี i18n ที่ต้องการ JSON input
Backend Engineering
แปลง Spring Boot application.yml หรือ Rails database.yml เป็น JSON เพื่อป้อนให้ deployment scripts, API gateways หรือบริการที่รับเฉพาะ JSON configuration
DevOps และ CI/CD
แปลง docker-compose.yml, GitHub Actions workflows หรือ Kubernetes manifests เป็น JSON สำหรับเครื่องมือตรวจสอบ policy engines อย่าง OPA หรือการ debug ด้วย jq
QA และการทดสอบ
เปลี่ยน YAML test fixtures เป็น JSON payloads สำหรับเครื่องมือทดสอบ API อย่าง Postman, Insomnia หรือชุดทดสอบอัตโนมัติที่คาดหวัง JSON request bodies
Data Engineering
แปลง YAML pipeline definitions (Airflow, dbt, Dagster) เป็น JSON สำหรับการตรวจสอบ schema การจัดการด้วยโปรแกรม หรือการผสานกับ metadata catalogs
การเรียนรู้และเอกสาร
ดูอย่างรวดเร็วว่าโครงสร้าง YAML แมปกับค่าเทียบเท่า JSON อย่างไร เมื่อศึกษา configuration formats หรือเขียนเอกสาร

ตารางอ้างอิงการแมปประเภทข้อมูล YAML เป็น JSON

ประเภทข้อมูล YAML ทุกชนิดแมปกับประเภท JSON เฉพาะในระหว่างการแปลง ตารางด้านล่างแสดง YAML construct แต่ละอันพร้อม JSON output ที่ได้ การเข้าใจการแมปเหล่านี้ช่วยให้คุณคาดการณ์ได้ว่าข้อมูล YAML ของคุณจะมีหน้าตาอย่างไรหลังการแปลง และหลีกเลี่ยงความประหลาดใจกับประเภทอย่าง booleans หรือ null values

ประเภท YAMLไวยากรณ์ YAMLผลลัพธ์ 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)

ไวยากรณ์ YAML เทียบกับ JSON

YAML และ JSON แทนโมเดลข้อมูลเดียวกัน แต่ใช้กฎไวยากรณ์ต่างกัน ความแตกต่างด้านล่างอธิบายว่าทำไมฟีเจอร์บางอย่างของ YAML อย่าง comments และ anchors จึงไม่มีค่าเทียบเท่าใน JSON

YAML
ใช้การย่อหน้าสำหรับการซ้อน (ไม่มีวงเล็บปีกกา) รองรับ comments ด้วย # Strings ส่วนใหญ่ไม่จำเป็นต้องใส่เครื่องหมายอัญประกาศ อนุญาตให้มีค่า multiline ด้วย | (literal) และ > (folded) block scalars รองรับ anchors (&name) และ aliases (*name) สำหรับการนำกลับมาใช้ใหม่ ใน YAML 1.2 มีเพียง true และ false เท่านั้นที่รับรู้เป็น boolean values; YAML 1.1 parsers รุ่นเก่ายังรับ yes, no, on และ off ด้วย แต่ค่าเหล่านี้ถือเป็น plain strings ใน YAML 1.2
JSON
ใช้วงเล็บปีกกาและวงเล็บเหลี่ยมสำหรับการซ้อน ไม่มีไวยากรณ์ comment ทุก string ต้องใส่เครื่องหมายอัญประกาศคู่ ไม่มี multiline string literals — ใช้ escape sequences \n แทน ไม่มีกลไก anchor หรือ alias Boolean values เป็น true และ false ตัวพิมพ์เล็กเท่านั้น ทุก key ต้องเป็น quoted strings Trailing commas ไม่ถูกต้อง

ตัวอย่างโค้ด

ด้านล่างเป็นตัวอย่างที่ใช้งานได้จริงสำหรับการแปลง YAML เป็น JSON ด้วยโปรแกรม แต่ละตัวอย่าง parse YAML string และส่งออก JSON ที่มีรูปแบบ

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

คำถามที่พบบ่อย

YAML เป็น superset ของ JSON หรือไม่?
ใช่ ตั้งแต่ YAML 1.2 (เผยแพร่ในปี 2009) เอกสาร JSON ที่ถูกต้องทุกอันก็เป็น YAML ที่ถูกต้องด้วย ข้อกำหนด YAML ถูกอัปเดตโดยตั้งใจเพื่อให้รองรับ JSON ได้อย่างสมบูรณ์ อย่างไรก็ตาม ในทางกลับกันไม่เป็นความจริง — ฟีเจอร์ YAML อย่าง comments, anchors และ unquoted keys ไม่มีค่าเทียบเท่าใน JSON
YAML comments เกิดอะไรขึ้นในระหว่างการแปลง?
Comments จะถูกทิ้ง JSON ไม่มีไวยากรณ์ comment ดังนั้นบรรทัดที่ขึ้นต้นด้วย # ใน YAML input จะหายไปในระหว่างการแปลง หากต้องการเก็บ comments ไว้ ให้เก็บไฟล์ YAML ต้นฉบับเป็นแหล่งข้อมูลหลักและสร้าง JSON จากไฟล์นั้นเมื่อจำเป็น
YAML anchors และ aliases จัดการอย่างไร?
Anchors (&name) และ aliases (*name) จะถูกแก้ไขในระหว่างการแยกวิเคราะห์ alias จะถูกแทนที่ด้วยสำเนาเต็มของข้อมูลที่ anchored JSON ที่ได้ไม่มี references — ค่าทั้งหมดถูกขยายแบบ inline Merge keys (<<: *name) จะถูกแก้ไขในลักษณะเดียวกัน
การแปลง YAML เป็น JSON สูญเสียข้อมูลได้หรือไม่?
สำหรับค่าข้อมูล ไม่สูญเสีย ประเภท YAML scalar ทั้งหมด (strings, numbers, booleans, null) มีค่าเทียบเท่า JSON โดยตรง สิ่งที่สูญเสียไปคือ: comments, tag directives, anchor names และความแตกต่างระหว่าง block style และ flow style หาก YAML ของคุณใช้ custom tags (!!python/object, !!timestamp) ค่าเหล่านั้นจะถูกแก้ไขเป็น plain values หรืออาจเกิด parse error ขึ้นอยู่กับ parser
ทำไม YAML boolean 'yes' จึงกลายเป็น string ใน JSON?
เครื่องมือนี้ใช้ js-yaml v4 ซึ่งเป็นไปตาม YAML 1.2 boolean resolution มีเพียง true และ false (ตัวพิมพ์ใดก็ได้) เท่านั้นที่รับรู้เป็น booleans ค่าอย่าง yes, no, on และ off ถือเป็น plain strings และปรากฏเป็น quoted strings ใน JSON output หากเห็นค่า string ที่ไม่คาดคิดในที่ที่คุณคาดหวัง booleans ให้เปลี่ยนเป็น true หรือ false ใน YAML source
ขนาดไฟล์ YAML สูงสุดที่เครื่องมือนี้รองรับได้คือเท่าไร?
เครื่องมือทำงานในเบราว์เซอร์ของคุณ ดังนั้นขีดจำกัดขึ้นอยู่กับหน่วยความจำที่ว่างอยู่ของอุปกรณ์ ในทางปฏิบัติ ไฟล์ขนาดถึงหลาย megabytes แปลงได้โดยไม่มีปัญหา สำหรับไฟล์ขนาดใหญ่มาก (50 MB ขึ้นไป) CLI tool อย่าง yq หรือ Python script ที่ใช้ PyYAML จะเชื่อถือได้มากกว่า เพราะสามารถ stream ข้อมูลแทนการโหลดทั้งหมดเข้าหน่วยความจำในครั้งเดียว
YAML multiline strings แปลงเป็น JSON อย่างไร?
YAML มี multiline block scalar styles สองแบบ Literal blocks (|) เก็บ line breaks เป็นอักขระ \n ใน JSON string Folded blocks (>) แทน single line breaks ด้วยช่องว่าง เปลี่ยนหลายบรรทัดให้เป็นย่อหน้าเดียว ทั้งสอง styles จะเพิ่ม trailing newline ไว้ท้ายโดยค่าเริ่มต้น ซึ่งสามารถตัดออกได้ด้วย chomping indicator (|- หรือ >-)

เครื่องมือที่เกี่ยวข้อง