منسق JSON
منسق JSON سريع ومجاني وآمن على الإنترنت.
نسق JSON الخاص بك أدناه
نسق JSON الخاص بك بسرعة عبر الإنترنت مع نتائج فورية. استمتع بمحرر حديث صديق للمبرمجين مع أرقام الأسطر وتلوين الصياغة. كل العمليات سريعة وخاصة ولا تغادر متصفحك أبدًا.
ما هو تنسيق JSON؟
تنسيق JSON هو عملية تحويل بيانات JSON إلى تمثيل موحد وسهل القراءة للبشر عن طريق إضافة التباعد والفراغات وانقطاعات الأسطر—دون تغيير الهيكل أو المحتوى. التنسيق الصحيح يجعل JSON أسهل للفحص، التصحيح، المشاركة، والتحرير، مع ضمان التوافق مع الأجهزة والبرمجيات.
بالتعريف، JSON يتجاهل الفراغات خارج القيّم النصية. ومع ذلك، JSON غير منسق أو مصغر—بدون تباعد أو مدمج في سطر واحد—يصعب جدًا قراءته أو تعديله للبشر بشكل موثوق.
التنسيق مقابل التصغير في JSON
- التنسيق يضيف فراغات، تباعد، وانقطاعات أسطر لتحسين الوضوح وقابلية القراءة.
- التصغير يزيل كل الفراغات غير الضرورية لتحقيق أقصى قدر من التكثيف والكفاءة في التخزين أو النقل.
- أداة تنسيق JSON قوية تسمح بالتبديل بين هذين الوضعين، مما يسهل التنقل بين النسخ الصديقة للبشر والمناسبة للآلات حسب الحاجة.
مثال: JSON مصغر مقابل JSON منسق
JSON مصغر (مضغوط):{"id":"3f4b2c","user":{"name":"Dana","is_active":true},"roles":["admin","editor"],"count":7}JSON منسق (مطبوع بشكل جميل):
{ "id": "3f4b2c", "user": { "name": "Dana", "is_active": true }, "roles": [ "admin", "editor" ], "count": 7 }
لماذا نقوم بتنسيق JSON؟
- قابلية القراءة: التباعد المناسب وانقطاعات الأسطر تسهل فحص الكائنات المتداخلة، اكتشاف الأخطاء، وفهم الهياكل المعقدة بسرعة.
- التصحيح: يصبح تتبع البيانات الغير صحيحة أو غير المتوقعة أسهل كثيرًا عند القدرة على مسح وتتبع المفاتيح والقيم ومستويات التداخل بصريًا.
- التعاون: JSON المنسق يسهل مراجعته، مناقشته، وتعديله في مراجعات الشيفرات، الوثائق، أو الملفات المشتركة.
- مراقبة الإصدارات: أدوات Git وغيرها من أنظمة التحكم بالإصدارات تنتج فروقًا أكثر وضوحًا مع JSON المنسق، مما يجعل تتبع التغييرات أسهل مع الزمن.
- الامتثال: العديد من أدلة الأسلوب وأدوات التدقيق الآلي (مثل Prettier, ESLint, أو jq) تفرض تنسيقًا متناسقًا للوضوح والمعيارية.
- توافق الأدوات: بعض واجهات برمجة التطبيقات، واجهات الأوامر، والمحررات تتطلب إدخال منسق لتسهيل التفاعل البشري أو التوثيق.
كيف تعمل أداة تنسيق JSON؟
- التحليل: تبدأ الأداة بمحاولة تحليل النص المدخل باستخدام محلل JSON صارم. هذه الخطوة تتحقق من صحة الصياغة — ترصد مشكلات مثل علامات اقتباس مفقودة، الفواصل الزائدة، أو الأحرف غير المهروسة.
- الطباعة الجميلة: بعد التأكد من صحة التحليل، يتم تحويل البيانات مرة أخرى إلى نص مع تباعد وتعريف انقطاعات الأسطر وفق إعدادات المستخدم (غالبًا 2 أو 4 مسافات) لإنشاء نسخة "مطبوعه بشكل جميل".
إذا لم يكن الإدخال JSON صالحًا، ستعرض الأداة رسالة خطأ مفيدة توضح مكان وطبيعة المشكلة.
خيارات التنسيق
- المسافات البادئة: حدّد عدد المسافات لكل مستوى (حتى 8).
- رتب مفاتيح الكائن أبجديًا
- استخدم التبويبات للمسافات بدلاً من الفراغات
- حوّل الأحرف غير ASCII إلى Unicode
- صغر المخرجات (سطر واحد بدون فراغات)
مشكلات شائعة تحلها الأداة
- JSON سطر واحد/مصغر: البيانات المرسلة من APIs أو ملفات السجلات غالبًا ما تكون مصغرة لتوفير عرض النطاق، مما يصعّب تعديلها يدويًا. التنسيق يعيد قابلية القراءة للمراجعة والتعديل.
- تباعد غير متناسق: عند نسخ JSON من مصادر مختلفة قد يحتوي على تبويبات ومساحات مختلطة أو تباعد غير متناسق. إعادة التنسيق توحّد هذه الاختلافات، معززة الوضوح والثبات.
- الهيكليات الكبيرة/المتداخلة: المصفوفات أو الكائنات المتداخلة بعمق (كالملفات التكوينية أو ردود API المعقدة) تصبح سهلة الفهم والتنقل عند تنسيقها، مع إمكانية الطي في المحررات الداعمة.
استخدام عملي: تنسيق ردود API
عند التكامل مع APIs خارجية (مثل AWS, Stripe, أو Google Cloud)، غالبًا ما تكون الردود مدمجة للسرعة. تنسيق مخرجات JSON يسهل فحص الحقول المفقودة، التصحيح، أو المشاركة مع الزملاء.
مثال: رد API الخام{"amount":2500,"currency":"usd","status":"succeeded","charges":[{"id":"ch_1Gq","amount":2500}]}منسق للمراجعة
{ "amount": 2500, "currency": "usd", "status": "succeeded", "charges": [ { "id": "ch_1Gq", "amount": 2500 } ] }
كيفية تنسيق JSON باستخدام هذه الأداة
- الصق أو حمّل JSON الخام، المصغر، أو سيء التنسيق في منطقة الإدخال.
- اختر خيارات التنسيق (حجم التباعد، ترتيب المفاتيح، إلخ).
- انقر على "تنسيق" لمعالجة المدخلات.
- شاهد أو انسخ المخرجات النظيفة والقابلة للقراءة. إذا وُجدت أخطاء، ستظهر رسائل تفصيلية تساعدك على إصلاح JSON.
يتم كل التنسيق بأمان داخل متصفحك—بياناتك لا تغادر جهازك أبدًا.
أمثلة تعليمات برمجية لتنسيق JSON
اطلع على كيفية تنسيق JSON في لغات البرمجة المختلفة. توضح هذه الأمثلة تقنيات التنسيق الأساسية بأسلوب واضح واحترافي.
const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);
import json
ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
pretty = json.dumps(json.loads(ugly), indent=2)
print(pretty)
package main
import (
"encoding/json"
"fmt"
)
func main() {
ugly := []byte(`{"name":"Alice","age":30,"roles":["admin","user"]}`)
var obj interface{}
json.Unmarshal(ugly, &obj)
pretty, _ := json.MarshalIndent(obj, "", " ")
fmt.Println(string(pretty))
}
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
String ugly = "{"name":"Alice","age":30,"roles":["admin","user"]}";
ObjectMapper mapper = new ObjectMapper();
Object obj = mapper.readValue(ugly, Object.class);
String pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
System.out.println(pretty);
}
}
using System;
using Newtonsoft.Json;
class Program {
static void Main() {
var ugly = "{"name":"Alice","age":30,"roles":["admin","user"]}";
var parsed = JsonConvert.DeserializeObject(ugly);
var pretty = JsonConvert.SerializeObject(parsed, Formatting.Indented);
Console.WriteLine(pretty);
}
}
<?php
$ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
$obj = json_decode($ugly);
echo json_encode($obj, JSON_PRETTY_PRINT);
require 'json'
ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
pretty = JSON.pretty_generate(JSON.parse(ugly))
puts pretty
echo '{"name":"Alice","age":30,"roles":["admin","user"]}' | jq .
fn main() {
let ugly = r#"{"name":"Alice","age":30,"roles":["admin","user"]}"#;
let value: serde_json::Value = serde_json::from_str(ugly).unwrap();
let pretty = serde_json::to_string_pretty(&value).unwrap();
println!("{}", pretty);
}
import com.fasterxml.jackson.databind.ObjectMapper
fun main() {
val ugly = "{"name":"Alice","age":30,"roles":["admin","user"]}"
val mapper = ObjectMapper()
val obj = mapper.readValue(ugly, Any::class.java)
val pretty = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj)
println(pretty)
}
import Foundation
let ugly = "{\"name\":\"Alice\",\"age\":30,\"roles\":[\"admin\",\"user\"]}"
if let data = ugly.data(using: .utf8),
let obj = try? JSONSerialization.jsonObject(with: data),
let pretty = try? JSONSerialization.data(withJSONObject: obj, options: .prettyPrinted),
let prettyString = String(data: pretty, encoding: .utf8) {
print(prettyString)
}
const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);
SELECT jsonb_pretty('{"name":"Alice","age":30,"roles":["admin","user"]}'::jsonb);
SELECT JSON_PRETTY('{"name":"Alice","age":30,"roles":["admin","user"]}');
$ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
$obj = $ugly | ConvertFrom-Json
$pretty = $obj | ConvertTo-Json -Depth 10
Write-Output $pretty
use JSON;
my $ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
my $obj = decode_json($ugly);
print to_json($obj, { pretty => 1 });
import 'dart:convert';
void main() {
const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
final obj = jsonDecode(ugly);
final pretty = JsonEncoder.withIndent(' ').convert(obj);
print(pretty);
}
ugly = ~s({"name":"Alice","age":30,"roles":["admin","user"]})
{:ok, obj} = Jason.decode(ugly)
pretty = Jason.encode!(obj, pretty: true)
IO.puts(pretty)
import play.api.libs.json._
object Main extends App {
val ugly = """{"name":"Alice","age":30,"roles":["admin","user"]}"""
val jsValue = Json.parse(ugly)
val pretty = Json.prettyPrint(jsValue)
println(pretty)
}