Форматировщик 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 и др.) требуют единообразного форматирования для ясности и стандартизации.
- Совместимость с инструментами: Некоторые API, CLI и редакторы требуют форматированный ввод для удобства человека или для логирования.
Как работает форматировщик JSON?
- Парсинг: Сначала форматировщик пытается распарсить входные данные с помощью строгого JSON-парсера, проверяя валидность синтаксиса — выявляя проблемы как отсутствующие кавычки, запятые в конце или неэкранированные символы.
- Красивый вывод: После успешного парсинга данные сериализуются обратно в строку с выбранным уровнем отступов (обычно 2 или 4 пробела) и разбивкой на строки, создавая красиво форматированный JSON.
Если входные данные невалидны, форматировщик выдает ошибку или сообщение с указанием места и причины проблемы.
Параметры форматирования
- Отступы: Настройте количество пробелов на уровень (до 8).
- Сортировать ключи объектов по алфавиту
- Использовать табуляции вместо пробелов для отступов
- Экранировать не-ASCII символы как Unicode
- Минифицировать вывод (однострочный, без пробелов)
Распространённые проблемы, решаемые форматированием
- Однострочный/Минифицированный JSON: данные от API или логов часто минифицируют для экономии трафика, что затрудняет ручное редактирование. Форматирование восстанавливает удобочитаемость для просмотра и правки.
- Несогласованные отступы: JSON из разных источников может содержать смешанные табуляции, пробелы или неоднородные глубины отступов. Переформатирование нормализует эти различия, улучшая ясность и единообразие.
- Большие/Вложенные структуры: Глубоко вложенные массивы или объекты (например, конфигурационные файлы или сложные ответы 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 в поле ввода.
- Выберите параметры форматирования (размер отступа, сортировка ключей и т. д.).
- Нажмите «Форматировать» для обработки вашего ввода.
- Просмотрите или скопируйте чистый, читаемый результат. Если обнаружены ошибки, появятся подробные сообщения для их исправления.
Все операции выполняются безопасно в вашем браузере — ваши данные не покидают устройство.
Примеры кода для форматирования 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)
}