Μορφοποιητής JSON
Γρήγορος, δωρεάν και ασφαλής online μορφοποιητής JSON.
Μορφοποιήστε το JSON σας παρακάτω
Μορφοποιήστε γρήγορα το JSON σας online με άμεσα αποτελέσματα. Απολαύστε ένα μοντέρνο, κατάλληλο για κώδικα επεξεργαστή με αριθμούς γραμμών και χρωματισμό σύνταξης. Όλες οι λειτουργίες είναι γρήγορες, ιδιωτικές και δεν αφήνουν ποτέ τον browser σας.
Τι είναι η Μορφοποίηση JSON;
Η μορφοποίηση JSON είναι η διαδικασία μετατροπής των δεδομένων JSON σε συνεπή, ευανάγνωστη μορφή με την προσθήκη εσοχών, κενών και διαχωριστικών γραμμής—χωρίς να αλλοιώνεται η δομή ή το περιεχόμενο. Η σωστή μορφοποίηση καθιστά τα JSON πιο εύκολα στην επιθεώρηση, αποσφαλμάτωση, διαμοιρασμό και επεξεργασία, διατηρώντας ταυτόχρονα τη συμβατότητα με μηχανές και λογισμικό.
Το JSON, από ορισμό, αγνοεί τα κενά εκτός από τις τιμές συμβολοσειρών. Ωστόσο, το κακώς μορφοποιημένο (ή συμπιεσμένο) JSON—χωρίς εσοχές ή συμπυκνωμένο σε μία γραμμή—μπορεί να είναι σχεδόν αδύνατο να διαβαστεί ή να τροποποιηθεί αξιόπιστα από ανθρώπους.
Μορφοποίηση vs Συμπίεση JSON
- Η μορφοποίηση προσθέτει κενά, εσοχές και διαχωριστικά γραμμής για σαφήνεια και αναγνωσιμότητα.
- Η συμπίεση αφαιρεί όλα τα περιττά κενά για μέγιστη συμπύκνωση και αποδοτικότητα σε αποθήκευση ή μεταφορά.
- Ένας ικανός μορφοποιητής JSON σας επιτρέπει να εναλλάσσετε αυτές τις λειτουργίες, κάνοντας εύκολη τη μετάβαση μεταξύ φιλικών προς τον άνθρωπο και βελτιστοποιημένων για μηχανή εκδόσεων.
Παράδειγμα: Συμπιεσμένο vs. Μορφοποιημένο 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 και άλλα VCS παράγουν πιο σημαντικές διαφορές με μορφοποιημένο JSON, διευκολύνοντας την παρακολούθηση αλλαγών με την πάροδο του χρόνου.
- Συμμόρφωση: Πολλοί κανόνες στυλ και αυτόματοι ελεγκτές (όπως Prettier, ESLint ή jq) επιβάλλουν συνεπή μορφοποίηση για σαφήνεια και τυποποίηση.
- Συμβατότητα εργαλείων: Ορισμένα API, CLI και επεξεργαστές περιμένουν μορφοποιημένη είσοδο για ευκολότερη ανθρώπινη αλληλεπίδραση ή καταγραφή.
Πώς λειτουργεί ένας Μορφοποιητής JSON;
- Ανάλυση: Ο μορφοποιητής προσπαθεί αρχικά να αναλύσει το κείμενο εισόδου με αυστηρό αναλυτή JSON. Αυτό ελέγχει τη σύνταξη, εντοπίζοντας προβλήματα όπως ελλείποντα εισαγωγικά, τελείες και μη διαφευγμένους χαρακτήρες.
- Όμορφη Εκτύπωση: Εφόσον είναι έγκυρο, τα αναλυμένα δεδομένα μετατρέπονται ξανά σε συμβολοσειρά με ορισμένη από τον χρήστη εσοχή (συνήθως 2 ή 4 κενά) και διαχωριστικά γραμμής, δημιουργώντας μια "όμορφα εκτυπωμένη" έκδοση.
Αν η είσοδος δεν είναι έγκυρο JSON, ο μορφοποιητής θα εμφανίσει λάθος ή ένα χρήσιμο μήνυμα που υποδεικνύει το σημείο και τη φύση του προβλήματος.
Επιλογές Μορφοποίησης
- Εσοχή: Ορίστε τον αριθμό των κενών ανά επίπεδο (μέχρι 8).
- Ταξινόμηση κλειδιών αντικειμένου αλφαβητικά
- Χρήση tab αντί κενών για εσοχή
- Απόδραση μη-ASCII χαρακτήρων ως Unicode
- Συμπίεση εξόδου (σε μία γραμμή, χωρίς κενά)
Συνηθισμένα Προβλήματα που Λύνονται με τη Μορφοποίηση
- Μία γραμμή/Συμπιεσμένο JSON: Τα δεδομένα που επιστρέφουν APIs ή αρχεία καταγραφής συνήθως είναι συμπιεσμένα για οικονομία εύρους ζώνης, καθιστώντας δύσκολη την χειροκίνητη επεξεργασία. Η μορφοποίηση αποκαθιστά την αναγνωσιμότητα για έλεγχο και επεξεργασία.
- Ασύμμετρη Εσοχή: JSON από διάφορες πηγές μπορεί να έχει ανάμεικτα tab, κενά ή διαφορετικά βάθη εσοχής. Η επαναμορφοποίηση κανονικοποιεί αυτές τις διαφορές, βελτιώνοντας τη σαφήνεια και τη συνοχή.
- Μεγάλης/Εμφωλευμένης Δομής: Πιο βαθιά εμφωλευμένα πίνακες ή αντικείμενα (όπως αρχεία ρυθμίσεων ή πολύπλοκες απαντήσεις API) γίνονται διαχειρίσιμα και εύκολα στη πλοήγηση όταν μορφοποιούνται, με δυνατότητες συμπλήρωσης σε υποστηριζόμενους επεξεργαστές.
Πραγματική Χρήση: Μορφοποίηση Απαντήσεων API
Κατά την ενσωμάτωση με τρίτα API (π.χ. 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 στην περιοχή εισόδου.
- Επιλέξτε τις επιλογές μορφοποίησης (μέγεθος εσοχής, ταξινόμηση κλειδιών κ.ά.).
- Πατήστε "Μορφοποίηση" για να επεξεργαστείτε το είσοδο.
- Δείτε ή αντιγράψτε την καθαρή, ευανάγνωστη έξοδο. Αν βρεθούν λάθη, εμφανίζονται αναλυτικά μηνύματα σύνταξης για να βοηθήσουν στη διόρθωση.
Όλη η μορφοποίηση εκτελείται με ασφάλεια στον browser σας—τα δεδομένα σας δεν φεύγουν ποτέ από τη συσκευή.
Παραδείγματα Κώδικα για Μορφοποίηση 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)
}