Μορφοποιητής 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;

  1. Ανάλυση: Ο μορφοποιητής προσπαθεί αρχικά να αναλύσει το κείμενο εισόδου με αυστηρό αναλυτή JSON. Αυτό ελέγχει τη σύνταξη, εντοπίζοντας προβλήματα όπως ελλείποντα εισαγωγικά, τελείες και μη διαφευγμένους χαρακτήρες.
  2. Όμορφη Εκτύπωση: Εφόσον είναι έγκυρο, τα αναλυμένα δεδομένα μετατρέπονται ξανά σε συμβολοσειρά με ορισμένη από τον χρήστη εσοχή (συνήθως 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 με αυτό το εργαλείο

  1. Επικολλήστε ή ανεβάστε το ακατέργαστο, συμπιεσμένο ή κακώς μορφοποιημένο JSON στην περιοχή εισόδου.
  2. Επιλέξτε τις επιλογές μορφοποίησης (μέγεθος εσοχής, ταξινόμηση κλειδιών κ.ά.).
  3. Πατήστε "Μορφοποίηση" για να επεξεργαστείτε το είσοδο.
  4. Δείτε ή αντιγράψτε την καθαρή, ευανάγνωστη έξοδο. Αν βρεθούν λάθη, εμφανίζονται αναλυτικά μηνύματα σύνταξης για να βοηθήσουν στη διόρθωση.

Όλη η μορφοποίηση εκτελείται με ασφάλεια στον browser σας—τα δεδομένα σας δεν φεύγουν ποτέ από τη συσκευή.

Παραδείγματα Κώδικα για Μορφοποίηση JSON

Δείτε πώς να μορφοποιείτε JSON σε διάφορες γλώσσες προγραμματισμού. Αυτά τα παραδείγματα παρουσιάζουν βασικές τεχνικές μορφοποίησης.

JavaScript (Node.js)
Install: Standard library
const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);
Python
Install: Standard library (json)
import json
ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
pretty = json.dumps(json.loads(ugly), indent=2)
print(pretty)
Go
Install: Standard library (encoding/json)
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))
}
Java
Install: com.fasterxml.jackson.core:jackson-databind
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);
  }
}
C#
Install: Newtonsoft.Json (Json.NET)
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
Install: Standard library (json_decode/json_encode)
<?php
$ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
$obj = json_decode($ugly);
echo json_encode($obj, JSON_PRETTY_PRINT);
Ruby
Install: Standard library (json)
require 'json'
ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
pretty = JSON.pretty_generate(JSON.parse(ugly))
puts pretty
Bash (Linux/macOS) with jq
Install: brew install jq (or apt-get install jq)
echo '{"name":"Alice","age":30,"roles":["admin","user"]}' | jq .
Rust
Install: cargo add serde_json
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);
}
Kotlin
Install: com.fasterxml.jackson.core:jackson-databind
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)
}
Swift
Install: Standard library (JSONSerialization)
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)
}
TypeScript
Install: Standard library
const ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);
SQL (PostgreSQL)
Install: Standard (jsonb_pretty)
SELECT jsonb_pretty('{"name":"Alice","age":30,"roles":["admin","user"]}'::jsonb);
MySQL
Install: Standard (JSON_PRETTY, 5.7+)
SELECT JSON_PRETTY('{"name":"Alice","age":30,"roles":["admin","user"]}');
PowerShell
Install: Standard
$ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}'
$obj = $ugly | ConvertFrom-Json
$pretty = $obj | ConvertTo-Json -Depth 10
Write-Output $pretty
Perl
Install: cpan JSON
use JSON;
my $ugly = '{"name":"Alice","age":30,"roles":["admin","user"]}';
my $obj = decode_json($ugly);
print to_json($obj, { pretty => 1 });
Dart
Install: Standard library (dart:convert)
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);
}
Elixir
Install: mix deps.get jason
ugly = ~s({"name":"Alice","age":30,"roles":["admin","user"]})
{:ok, obj} = Jason.decode(ugly)
pretty = Jason.encode!(obj, pretty: true)
IO.puts(pretty)
Scala
Install: com.typesafe.play:play-json_2.13:2.9.4
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)
}