محوّل YAML إلى JSON
الصق YAML واحصل على JSON فوراً. تحويل مباشر في متصفّحك. يدعم بيانات Kubernetes ومواصفات OpenAPI وقيم Helm. خصوصية 100%، بدون رفع ملفات.
الخيارات · مسافتان
ما هو JSON؟
JSON (ترميز كائنات JavaScript) هو تنسيق خفيف لتبادل البيانات النصية موحَّد كمعيار RFC 8259 وECMA-404. يدعم ستة أنواع بيانات — سلاسل نصية وأرقام وقيم منطقية وnull ومصفوفات وكائنات — بصياغة صارمة وبسيطة يمكن لكل لغة برمجة وواجهة برمجية تقريباً تحليلها بشكل أصلي. بينما يُعدّ YAML التنسيق المفضل لملفات الإعداد المكتوبة يدوياً (Kubernetes، GitHub Actions، Ansible، قيم Helm)، يُعدّ JSON التنسيق الآلي العالمي للواجهات البرمجية والأتمتة والمعالجة البرمجية للبيانات.
تتميز هذه الأداة بأربعة مزايا مقارنة بالمحوّلات النموذجية:
**1. معالجة YAML متعدد الوثائق.** يدعم YAML وثائق متعددة في تيار واحد مفصولة بـ ---. تستخدم هذه الأداة parseAllDocuments من مكتبة eemeli/yaml مع خيارات { version: '1.2', merge: true } وتُعيد الوثيقة الأولى بصيغة JSON. إذا احتجت إلى جميع الوثائق، قسّم على --- وحوّل كل واحدة منفصلاً.
**2. توسيع المراسي والمراجع.** تسمح مراسي YAML (&name) ومراجعها (*name) بإعادة استخدام كتل البيانات. تُوسِّع هذه الأداة بالكامل جميع المراسي والمراجع (بما في ذلك مفاتيح الدمج: <<: *anchor) بحيث يحتوي إخراج JSON على بيانات كاملة ومستقلة بذاتها دون أي مراجع. انظر كيف تُعالَج في الاتجاه المعاكس على محوّل JSON إلى YAML.
**3. فقدان التعليقات — شفافية تعليمية.** يدعم YAML تعليقات #، التي تُستخدَم كثيراً في بيانات Kubernetes وقيم Helm وكتب تشغيل Ansible. لا تحتوي JSON على صيغة تعليق، لذا تُحذف التعليقات نهائياً أثناء التحويل. هذا ليس خطأً — إنه فرق جوهري في التنسيق. انظر مقالنا التفصيلي عن الفروقات بين YAML وJSON لمزيد من المعلومات.
**4. خصوصية 100% قائمة على المتصفح.** بيانات YAML الخاصة بك — التي كثيراً ما تحتوي على أسرار Kubernetes وبيانات اعتماد قواعد البيانات وقيم Helm الداخلية — لا تغادر متصفحك أبداً. لا تُرسَل أي بيانات إلى أي خادم. بعد التحويل إلى JSON، يمكنك التحقق من النتيجة وتنسيقها باستخدام منسّق JSON قبل استخدامها لاحقاً.
// Convert YAML to JSON in Node.js using the eemeli/yaml library
import { parseAllDocuments } from 'yaml';
const yamlString = `apiVersion: apps/v1
kind: Deployment`;
// parseAllDocuments handles multi-document YAML (--- separator)
// version: '1.2' ensures yes/no are strings, not booleans
// merge: true expands anchor/alias merge keys (<<: *anchor)
const docs = parseAllDocuments(yamlString, { version: '1.2', merge: true });
// Take the first document (skip additional --- blocks)
const json = JSON.stringify(docs[0].toJSON(), null, 2);
console.log(json);
// {
// "apiVersion": "apps/v1",
// "kind": "Deployment"
// } الميزات الرئيسية
تحويل مباشر
يتحدث إخراج JSON فوراً أثناء الكتابة أو لصق YAML — دون الحاجة إلى زر «تحويل». تتحول المدخلات الكبيرة (أكثر من 200 كيلوبايت) تلقائياً إلى الوضع اليدوي للحفاظ على استجابة المتصفح.
مسافة بادئة مسافتين أو 4 مسافات
التبديل بين مسافتين و4 مسافات للمسافة البادئة في إخراج JSON. مسافتان معيار لمعظم الأدوات والواجهات البرمجية؛ 4 مسافات تتطابق مع بعض أدلة الأسلوب وافتراضيات المحررات.
دعم YAML متعدد الوثائق
يتعامل مع تيارات YAML التي تحتوي على وثائق متعددة مفصولة بـ ---. تُحوَّل الوثيقة الأولى إلى JSON وتُعاد. مفيد لملفات Kubernetes متعددة الموارد وكتب تشغيل Ansible.
توسيع المراسي والمراجع
يُوسِّع بالكامل مراسي YAML (&name) ومراجعها (*name)، بما في ذلك مفاتيح الدمج (<<: *anchor). يحتوي إخراج JSON على بيانات كاملة ومُحلَّلة المراجع دون مراجع — السلوك الصحيح إذ لا يمتلك JSON مكافئاً.
خصوصية 100% قائمة على المتصفح
يعمل التحويل كلياً محلياً في متصفحك باستخدام JavaScript. بيانات YAML الخاصة بك — بما في ذلك الأسرار وبيانات الاعتماد والإعدادات الإنتاجية — لا تُرسَل إلى أي خادم، ولا تُسجَّل، ولا تُخزَّن.
دعم K8s وCompose وHelm وOpenAPI
مُحسَّنة لحالات استخدام DevOps الحقيقية: بيانات Kubernetes، ومجموعات Docker Compose، وقيم Helm chart، وسير عمل GitHub Actions، ومواصفات OpenAPI، وكتب تشغيل Ansible — مع أمثلة لكل منها.
أمثلة
بيان Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: production
labels:
app: my-app
version: 1.0.0
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:1.0.0
ports:
- containerPort: 8080
resources:
requests:
memory: 64Mi
cpu: 250m
limits:
memory: 128Mi
cpu: 500m تحويل بيان نشر Kubernetes من YAML إلى JSON — مفيد للاستعلام باستخدام jq أو الإرسال إلى Kubernetes API أو تغذيته إلى Terraform وخطوط CI/CD
Docker Compose
version: '3.9'
services:
web:
image: nginx:1.25-alpine
ports:
- '80:80'
- '443:443'
environment:
NGINX_HOST: example.com
NGINX_PORT: '80'
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: mydb
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata: {} تحويل ملف Docker Compose YAML إلى JSON للمعالجة البرمجية أو التغذية في سكريبتات الأتمتة أو معالجته بأدوات JavaScript
سير عمل GitHub Actions
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Run tests
run: pnpm test تحليل ملف YAML لسير عمل GitHub Actions إلى JSON للاستعلام عن حقول محددة أو التحقق من البنية أو التكامل مع واجهات برمجية تستهلك JSON
مواصفة OpenAPI
openapi: 3.0.3
info:
title: User API
version: 1.0.0
description: Manage application users
paths:
/users:
get:
summary: List users
operationId: listUsers
parameters:
- name: limit
in: query
schema:
type: integer
default: 20
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
/users/{id}:
get:
summary: Get user
operationId: getUser
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Success
components:
schemas:
User:
type: object
properties:
id:
type: string
name:
type: string
email:
type: string
format: email تحويل مواصفة OpenAPI 3.0 من YAML إلى JSON للاستخدام مع مولّدات كود العميل أو أدوات اختبار API أو فحص المخطط برمجياً
Helm values.yaml
replicaCount: 3
image:
repository: my-app
tag: 1.0.0
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
ingress:
enabled: true
className: nginx
hosts:
- host: my-app.example.com
paths:
- path: /
pathType: Prefix
resources:
requests:
memory: 64Mi
cpu: 250m
limits:
memory: 128Mi
cpu: 500m
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 80 تحويل ملف Helm chart values.yaml إلى JSON للتحليل أو توليد التقارير أو تغذيته في أدوات تتوقع إعداداً بصيغة JSON
كتاب تشغيل Ansible
- name: Configure web servers
hosts: webservers
become: true
vars:
http_port: 80
max_clients: 200
tasks:
- name: Ensure nginx is installed
ansible.builtin.package:
name: nginx
state: present
- name: Start nginx service
ansible.builtin.service:
name: nginx
state: started
enabled: true
- name: Copy nginx config
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
notify:
- Restart nginx
handlers:
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restarted تحليل ملف YAML لكتاب تشغيل Ansible إلى JSON لفحص بنية المهام أو مراجعة الإعدادات أو التكامل مع خطوط إعداد التقارير
كيفية الاستخدام
- 1
الصق بيانات YAML
أدخل أو الصق بيانات YAML في حقل الإدخال أعلاه. يمكنك أيضاً النقر على «تحميل مثال» لتجربة عينة كبيان نشر Kubernetes أو ملف Docker Compose أو Helm values.yaml.
- 2
شاهد إخراج JSON مباشرة
يظهر JSON فوراً في لوحة الإخراج. اضبط الخيارات (المسافة البادئة مسافتان أو 4 مسافات) لتتطابق مع متطلبات الأداة المستهدفة.
- 3
انسخ أو حمّل
انقر على «انسخ» لنقل JSON إلى الحافظة، أو «تحميل» لحفظه كملف .json جاهز لاستخدامه مع jq أو استدعاءات API أو أي أداة لاحقة.
أخطاء YAML الشائعة
مسافة بادئة بعلامات الجدولة
تحظر مواصفة YAML أحرف الجدولة للمسافة البادئة — المسافات فقط مسموح بها. إذا كُتب ملف YAML أو نُسخ من محرر يستخدم علامات الجدولة، سيطرح المحلل خطأً. استبدل جميع مسافات الجدولة البادئة بمسافات (مسافتان أو 4 مسافات في كل مستوى).
services: web: image: nginx:1.25-alpine
services:
web:
image: nginx:1.25-alpine مسافة بادئة غير متسقة
يستخدم YAML مسافة بادئة متسقة لتحديد التداخل. خلط أعداد مختلفة من المسافات داخل نفس الكتلة يُسبب أخطاء في التحليل. يجب أن يُزاد مستوى كل طبقة بنفس عدد المسافات طوال الوثيقة.
metadata: name: my-app namespace: production
metadata: name: my-app namespace: production
أحرف خاصة غير مقتبسة
أحرف مثل : و# و& و* و{ و} و[ و] و| و> و! لها معانٍ خاصة في YAML. استخدامها بدون اقتباس في القيم قد يُسبب أخطاء في التحليل أو سلوكاً غير متوقع. اقتبس القيم التي تحتوي على هذه الأحرف بعلامات اقتباس مفردة أو مزدوجة.
url: http://example.com:8080/api tag: #latest
url: 'http://example.com:8080/api' tag: '#latest'
دورات المراسي
يسمح YAML تقنياً بمراسٍ تُشير إلى نفسها (مراجع دائرية)، وإن كان ذلك نادراً في الممارسة. يُسبب مرساة دائرية دخول المحلل في حلقة توسيع لانهائية. تكتشف مكتبة eemeli/yaml المراسي الدائرية وتطرح خطأً بدلاً من التعليق.
# Circular anchor (rare but possible) base: &base parent: *base
# Use explicit fields instead of circular references base: parent: null
ارتباك الوثائق المتعددة
ملفات YAML التي تحتوي على فواصل --- متعددة تحتوي على وثائق متعددة. تُعيد هذه الأداة الوثيقة الأولى فقط بصيغة JSON. إذا توقعت بيانات من وثيقة لاحقة، فلن تظهر في الإخراج. قسّم YAML على --- وحوّل كل قسم بشكل منفصل إذا احتجت إلى جميع الوثائق.
# Only the first document is converted apiVersion: v1 kind: ConfigMap --- apiVersion: v1 kind: Secret
# Convert each document separately apiVersion: v1 kind: ConfigMap
فقدان التعليقات
يدعم YAML تعليقات # لكن JSON لا يدعمها. تُحذف جميع تعليقات YAML نهائياً أثناء التحويل — هذا فرق جوهري في التنسيق وليس قيداً في الأداة. إذا كنت بحاجة إلى الحفاظ على التعليقات كبيانات في JSON، رمّزها كحقل مخصص مثل مفتاح _comment.
# This comment will be lost replicas: 3 # scale this up for production
replicas: 3 _comment: scale this up for production
حالات الاستخدام الشائعة
- تحليل بيانات Kubernetes
- تحويل بيانات Kubernetes YAML إلى JSON للاستعلام باستخدام jq، أو الإرسال إلى Kubernetes REST API، أو المعالجة في مصادر بيانات Terraform، أو التغذية في خطوط CI/CD التي تتوقع JSON.
- تحويل Docker Compose لأدوات JavaScript
- تحليل Docker Compose YAML إلى JSON لاستخراج تعريفات الخدمات وأسماء الصور وتعيينات المنافذ ومتغيرات البيئة للاستخدام في سكريبتات الأتمتة أو رسوم التبعيات أو أدوات Node.js.
- تكامل GitHub Actions API
- تحويل ملفات YAML لسير عمل GitHub Actions إلى JSON للتحقق من البنية برمجياً أو استخراج تعريفات المهام والخطوات أو التكامل مع واجهات برمجية لـ CI/CD تقبل مواصفات سير العمل بصيغة JSON.
- تحويل OpenAPI لتوليد كود العميل
- تقبل كثير من مولّدات الكود (openapi-generator، swagger-codegen) مواصفات OpenAPI بأي صيغة. حوّل مواصفة YAML إلى JSON عندما تتطلب أداة ما صراحةً مدخل JSON.
- تحليل قيم Helm
- تحويل ملف Helm chart values.yaml إلى JSON لتوليد التقارير أو مقارنة القيم عبر بيئات مختلفة أو تغذيتها في أدوات إنفاذ السياسات أو معالجتها بأتمتة تتوقع إعداداً بصيغة JSON.
- ترحيل الإعدادات إلى أدوات قائمة على JSON
- ترحيل إعداد التطبيق من YAML (شائع في أدوات البنية التحتية) إلى JSON للاستخدام في بيئات JavaScript أو واجهات REST API أو AWS AppConfig أو Azure App Configuration أو أي نظام يخزن الإعدادات بصيغة JSON.
تفاصيل تقنية
- مواصفة YAML 1.2 عبر parseAllDocuments مع merge:true
- يُحلَّل YAML باستخدام مكتبة eemeli/yaml (الإصدار v2.8+، آمن من الثغرات) عبر parseAllDocuments مع { version: '1.2', merge: true }. يضمن مخطط YAML 1.2 معاملة السلاسل النصية المجردة مثل yes وno كسلاسل نصية (وليس كقيم منطقية). يُوسِّع الخيار merge: true مفاتيح دمج المراسي/المراجع (<<: *anchor) بالكامل. يُعيد YAML متعدد الوثائق (مفصول بـ ---) الوثيقة الأولى.
- توسيع المراسي والمراجع عبر المكتبة
- تتعامل مكتبة eemeli/yaml مع توسيع المراسي (&name) والمراجع (*name) بأمان، بما في ذلك اكتشاف المراجع الدائرية. جميع كتل البيانات المُستعار إليها — بما في ذلك توسيعات مفتاح الدمج — مُضمَّنة بالكامل في إخراج JSON. هذا التحويل الصحيح إذ لا يمتلك JSON مفهوم المرسي أو المرجع. يمنع التوسيع الآمن للمكتبة الحلقات اللانهائية من YAML المشوَّه.
- قائم على المتصفح — بدون رفع ملفات أو خادم
- تتم جميع المعالجة كلياً في محرك JavaScript بمتصفحك. لا تُرسَل أي بيانات عبر الشبكة في أي وقت. تتحول المدخلات الأكبر من 200 كيلوبايت تلقائياً من الوضع المباشر إلى الوضع اليدوي (مطلوب نقر «تحويل» صريح) للحفاظ على استجابة المتصفح ومنع تعطّل مسار التنفيذ الرئيسي أثناء التسلسل الثقيل.
أفضل الممارسات
- استخدم صياغة YAML 1.2 المتوافقة للتحويل النظيف
- اكتب YAML باستخدام اتفاقيات YAML 1.2 — اقتبس قيم السلاسل النصية yes وno وon وoff وy وn صراحةً (مثلاً: enabled: 'yes') لتفادي الغموض. تُحلِّل هذه الأداة بمخطط YAML 1.2 (لذا هي سلاسل نصية)، لكن الأدوات الأقدم في خط أنابيبك قد تستخدم YAML 1.1 (حيث تصبح قيماً منطقية). الاقتباس الصريح في مصدر YAML هو الممارسة الأأمن عبر جميع المحللات.
- اقتبس الأرقام الكبيرة في YAML للحفاظ على الدقة
- لا يستطيع JavaScript تمثيل الأعداد الصحيحة الأكبر من 2^53 - 1 (9007199254740991) بدقة. يمكن أن تتجاوز حقول Kubernetes مثل resourceVersion وuid هذا الحد. اقتبس هذه القيم في مصدر YAML (resourceVersion: '9007199254740993') حتى يُعاملها المحلل كسلاسل نصية تُحفَظ بدقة في إخراج JSON.
- تحقق من إخراج JSON قبل استخدامه في الواجهات البرمجية
- بعد تحويل YAML إلى JSON، تحقق من النتيجة قبل إرسالها إلى واجهة برمجية أو تخزينها أو معالجتها برمجياً. استخدم منسّق JSON لتأكيد صحة البنية. هذا مهم بشكل خاص لاستدعاءات Kubernetes API ومواصفات OpenAPI وأي حمولة مُتحقَّق منها بـ JSON Schema.
- افصل YAML متعدد الوثائق قبل التحويل
- إذا احتوى ملف YAML على وثائق متعددة مفصولة بـ --- وأردت تحويلها جميعاً إلى JSON، قسّم الملف أولاً على --- وحوّل كل وثيقة بشكل منفصل. تأخذ هذه الأداة الوثيقة الأولى فقط. طريقة بسيطة: قسّم على '\n---\n' في محررك أو باستخدام awk، ثم الصق كل قسم بشكل منفصل.
- استخدم jq لمعالجة JSON اللاحقة
- بمجرد حصولك على JSON من YAML، يُعدّ jq الطريقة الأسرع للاستعلام وتحويله من سطر الأوامر. انسخ JSON المُحوَّل، ثم استخدم jq '.spec.replicas' أو jq '.services | keys' لاستخراج ما تحتاجه بالضبط. لمعالجة دُفعية لكثير من الملفات، استخدم واجهة yq CLI مع علم -o json مباشرة.
الأسئلة الشائعة
كيف أحوّل YAML إلى JSON عبر الإنترنت؟
كيف تتعامل هذه الأداة مع YAML متعدد الوثائق (فاصل ---)؟
كيف تُعالَج المراسي والمراجع (&anchor و*alias) في YAML؟
هل تُحفَظ تعليقات YAML في إخراج JSON؟
كيف أستخدم هذه الأداة مع بيان Kubernetes؟
كيف تساعد هذه الأداة مع ملفات Docker Compose؟
ما الفرق بين YAML 1.1 وYAML 1.2؟ وأيهما تستخدم هذه الأداة؟
لماذا يحظر YAML استخدام علامات الجدولة للمسافة البادئة؟
هل يمكن أن تفقد الأرقام الكبيرة دقتها عند تحويل YAML إلى JSON؟
كيف أحوّل YAML إلى JSON في سطر الأوامر؟
هل تُرسَل بيانات YAML إلى أي خادم عند استخدام هذه الأداة؟
هل هناك حد لحجم ملف YAML المُدخَل؟
أدوات ذات صلة
عرض جميع الأدوات →محوّل Base64 — ترميز وفك ترميز أونلاين
الترميز والتنسيق
رمّز وفك ترميز Base64 مجاناً أونلاين — محوّل فوري مع دعم UTF-8 والرموز التعبيرية. خصوصية 100% — يعمل في متصفّحك. جرّبه الآن.
منسق JSON — التحقق والضغط وإصلاح الأخطاء
الترميز والتنسيق
نسّق JSON وتحقّق من صحته وأصلح الأخطاء فوراً — محرّر مجاني أونلاين يعمل في متصفّحك. يدعم الضغط والتجميل والتحويل. جرّبه الآن.
محوّل JSON إلى YAML
الترميز والتنسيق
الصق JSON واحصل على YAML فوراً. تحويل مباشر في متصفّحك، جاهز لـ Kubernetes وDocker Compose، مع حماية من مشكلة Norway. خصوصية 100%.
مرمّز ومفكك ترميز URL مع محلل روابط مدمج
الترميز والتنسيق
رمّز وفك ترميز روابط URL فوراً أونلاين — مع محلل روابط مدمج ووضعي encodeURI وencodeURIComponent. مجاني وخاص 100%. جرّبه الآن.
محوّل الأنظمة العددية — ثنائي وست عشري وعشري وثماني
أدوات التحويل
حوّل بين الأنظمة الثنائية والست عشرية والعشرية والثمانية وأي أساس من 2 إلى 36 فوراً — أداة مجانية أونلاين تعمل في متصفّحك. جرّبها الآن.
ضغط الصور — JPEG وPNG وWebP
أدوات التحويل
اضغط صور JPEG وPNG وWebP أونلاين مجاناً — بياناتك لا تغادر متصفّحك أبداً. قلّل حجم الصورة حتى 80% مع الحفاظ على الجودة. معالجة دفعية لـ 20 صورة.