Whiz Tools

Форматувач JSON

Форматуйте та покращуйте свій JSON за допомогою цього простого інструменту

Форматований JSON з'явиться тут...

JSON Форматер

Вступ

JSON (JavaScript Object Notation) — це легкий формат обміну даними, який став стандартом для обміну даними в веб-додатках. Незважаючи на свою простоту, дані JSON можуть стати важкими для читання, коли вони зменшені або не мають належного форматування. Цей інструмент допомагає вам перетворити сирі, неформатовані рядки JSON у добре структурований, відформатований вигляд, який значно легше читати та аналізувати.

Форматування JSON (також відоме як "красиве друкування") додає послідовний відступ, розриви рядків і пробіли, щоб візуально представити ієрархічну структуру даних JSON. Це особливо цінно при роботі зі складними вкладеними об'єктами або великими наборами даних, де зв'язки між елементами інакше можуть бути важко розпізнати.

Наш інструмент форматування JSON надає простий інтерфейс для покращення вашого JSON-даних з належним відступом і структурою, роблячи його більш читабельним для людей, зберігаючи його дійсність для машин.

Синтаксис і структура JSON

JSON побудований на двох основних структурах:

  1. Об'єкти: Колекції пар ім'я/значення, що містяться в фігурних дужках {}. Кожне ім'я супроводжується двокрапкою : і пари відокремлюються комами ,.
   {"name": "John", "age": 30, "city": "New York"}
   
  1. Масиви: Упорядковані списки значень, що містяться в квадратних дужках []. Значення відокремлюються комами ,.
   ["apple", "banana", "cherry"]
   

Значення JSON можуть бути:

  • Рядками (в подвійних лапках): "Hello World"
  • Числами: 42 або 3.14159
  • Булевими: true або false
  • Null: null
  • Об'єктами: {"key": "value"}
  • Масивами: [1, 2, 3]

Правильний JSON повинен дотримуватися цих синтаксичних правил:

  • Імена повинні бути рядками в подвійних лапках
  • Значення повинні бути одним із дійсних типів даних JSON
  • Не допускаються коми в кінці
  • Коментарі не дозволені
  • Функції або методи не дозволені

Загальні синтаксичні помилки включають:

  • Відсутні або невідповідні дужки/фігурні дужки
  • Відсутні лапки навколо імен властивостей
  • Використання одинарних лапок замість подвійних
  • Наявність ком у кінці
  • Використання невизначених як значення

Як працює форматування JSON

Форматування JSON перетворює компактний, зменшений JSON у більш читабельну форму шляхом:

  1. Парсинг: Рядок JSON спочатку розбирається, щоб забезпечити його дійсність і створити представлення даних у пам'яті.

  2. Відступ: Кожен вкладений рівень об'єктів і масивів відступає (зазвичай на 2 або 4 пробіли), щоб візуально представити ієрархію.

  3. Розриви рядків: Нові рядки додаються після кожної властивості або елемента масиву для покращення читабельності.

  4. Пробіли: Додаються послідовні пробіли навколо двокрапок і ком.

Наприклад, цей зменшений JSON:

{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"Anytown","state":"CA"},"hobbies":["reading","hiking","photography"]}

Стає таким відформатованим JSON:

{
  "name": "John Doe",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA"
  },
  "hobbies": [
    "reading",
    "hiking",
    "photography"
  ]
}

Наш форматер використовує стандартний відступ у 2 пробіли на рівень, що є загальноприйнятою конвенцією в розробницькому співтоваристві та забезпечує гарний баланс між компактністю та читабельністю.

Валідація JSON

Критичним аспектом форматування JSON є валідація. Перш ніж JSON можна відформатувати, він повинен бути синтаксично дійсним відповідно до специфікації JSON. Загальні помилки валідації включають:

  1. Синтаксичні помилки:

    • Непідписані назви властивостей
    • Відсутні або зайві коми
    • Неправильно вкладені структури
    • Непідписані рядки, об'єкти або масиви
  2. Помилки типу даних:

    • Використання специфічних для JavaScript значень, таких як undefined або NaN
    • Включення функцій або методів
    • Використання одинарних лапок для рядків

Коли ви стикаєтеся з недійсним JSON, повідомлення про помилку може допомогти виявити проблему. Більшість парсерів JSON вкажуть позицію, де парсинг зазнав невдачі, що може допомогти виявити проблему. Наш інструмент надає чіткі повідомлення про помилки, щоб допомогти вам виявити та виправити проблеми у ваших даних JSON.

Сценарії використання

Форматування JSON є цінним у багатьох ситуаціях:

Розробка та тестування API

При роботі з RESTful API відформатований JSON полегшує:

  • Перегляд відповідей
  • Налагодження тіл запитів
  • Документування прикладів API
  • Перевірка структури даних на відповідність очікуванням

Управління конфігурацією

Багато сучасних додатків використовують JSON для конфігурації:

  • Файли налаштувань додатків
  • Конфігурації середовища
  • Специфікації збірки та розгортання
  • Шаблони Інфраструктури як Код (наприклад, AWS CloudFormation, Terraform)

Аналіз даних та візуалізація

Відформатований JSON допомагає, коли:

  • Дослідження наборів даних
  • Підготовка даних для візуалізації
  • Розуміння схем даних
  • Виявлення шаблонів у структурованих даних

Налагодження та усунення неполадок

Правильно відформатований JSON є важливим, коли:

  • Налагодження веб-додатків
  • Перегляд localStorage або sessionStorage
  • Аналіз відповідей мережі
  • Усунення проблем з інтеграцією даних

Освітні цілі

Чітке форматування JSON є цінним для:

  • Викладання структур даних
  • Демонстрації вкладених відносин
  • Пояснення концепцій API
  • Ілюстрації принципів моделювання даних

Альтернативи

Хоча наш веб-інструмент форматування JSON зручний для швидких завдань форматування, існує кілька альтернатив для різних сценаріїв:

Інструменти розробника браузера

Сучасні браузери включають можливості форматування JSON:

  • DevTools Chrome та Edge автоматично форматують відповіді JSON на вкладці Мережа
  • Переглядач JSON Firefox надає інтерактивний деревоогляд
  • Розширення браузера, такі як JSONView, можуть форматувати JSON безпосередньо в браузері

Редактори коду та IDE

Більшість середовищ розробки пропонують форматування JSON:

  • Visual Studio Code має вбудоване форматування JSON (Alt+Shift+F)
  • IDE JetBrains (WebStorm, IntelliJ) включають потужні інструменти JSON
  • Sublime Text та Atom підтримують форматування JSON через плагіни

Інструменти командного рядка

Для користувачів терміналу або автоматизації:

  • jq — це потужний процесор JSON командного рядка
  • json_pp постачається попередньо встановленим на багатьох системах Unix
  • python -m json.tool забезпечує швидке форматування за допомогою Python

Програмні підходи

Коли потрібно форматувати JSON у додатках:

// JavaScript
const formatted = JSON.stringify(jsonObject, null, 2);
# Python
import json
formatted = json.dumps(json_object, indent=2)
// Java з Gson
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String formatted = gson.toJson(jsonObject);
# Ruby
require 'json'
formatted = JSON.pretty_generate(json_object)
// PHP
$formatted = json_encode($jsonObject, JSON_PRETTY_PRINT);

Історія

JSON був створений Дугласом Крокфордом на початку 2000-х років як легка альтернатива XML. Формат був похідним від синтаксису об'єктних літералів JavaScript, але розроблений для незалежності від мови. У 2006 році JSON був формально специфікований у RFC 4627, і він швидко набрав популярності завдяки своїй простоті та сумісності з JavaScript.

Перед JSON XML був домінуючим форматом для обміну даними, але його громіздкість і складність робили його незручним для багатьох застосувань. JSON запропонував більш стиснутий синтаксис, який був легшим для читання та написання як для людей, так і для машин. Він також ідеально відповідав об'єктній моделі JavaScript, що робило його природним вибором для веб-додатків.

Прийняття JSON прискорилося з підйомом AJAX та RESTful API в середині 2000-х років. До 2010-х років він став стандартом для веб-API, файлів конфігурації та зберігання даних у NoSQL базах даних, таких як MongoDB та CouchDB.

Сьогодні JSON підтримується практично кожною мовою програмування та використовується в безлічі застосувань в Інтернеті. Його простота, гнучкість та універсальна підтримка зробили його одним з найважливіших форматів даних у сучасних обчисленнях.

Приклади коду

Ось приклади того, як форматувати JSON на різних мовах програмування:

// Форматування JSON на JavaScript
function formatJSON(jsonString) {
  try {
    const parsedData = JSON.parse(jsonString);
    return JSON.stringify(parsedData, null, 2);
  } catch (error) {
    return `Помилка: ${error.message}`;
  }
}

// Приклад використання
const rawJSON = '{"name":"John","age":30,"city":"New York"}';
console.log(formatJSON(rawJSON));
# Форматування JSON на Python
import json

def format_json(json_string):
    try:
        parsed_data = json.loads(json_string)
        return json.dumps(parsed_data, indent=2)
    except json.JSONDecodeError as e:
        return f"Помилка: {str(e)}"

# Приклад використання
raw_json = '{"name":"John","age":30,"city":"New York"}'
print(format_json(raw_json))
// Форматування JSON на Java з Gson
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;

public class JSONFormatter {
    public static String formatJSON(String jsonString) {
        try {
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            Object parsedJson = gson.fromJson(jsonString, Object.class);
            return gson.toJson(parsedJson);
        } catch (JsonSyntaxException e) {
            return "Помилка: " + e.getMessage();
        }
    }
    
    public static void main(String[] args) {
        String rawJSON = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
        System.out.println(formatJSON(rawJSON));
    }
}
// Форматування JSON на PHP
function formatJSON($jsonString) {
    $result = json_decode($jsonString);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return "Помилка: " . json_last_error_msg();
    }
    return json_encode($result, JSON_PRETTY_PRINT);
}

// Приклад використання
$rawJSON = '{"name":"John","age":30,"city":"New York"}';
echo formatJSON($rawJSON);
# Форматування JSON на Ruby
require 'json'

def format_json(json_string)
  begin
    parsed_data = JSON.parse(json_string)
    return JSON.pretty_generate(parsed_data)
  rescue JSON::ParserError => e
    return "Помилка: #{e.message}"
  end
end

# Приклад використання
raw_json = '{"name":"John","age":30,"city":"New York"}'
puts format_json(raw_json)
// Форматування JSON на C# з Newtonsoft.Json
using Newtonsoft.Json;
using System;

class JSONFormatter
{
    public static string FormatJSON(string jsonString)
    {
        try
        {
            object parsedJson = JsonConvert.DeserializeObject(jsonString);
            return JsonConvert.SerializeObject(parsedJson, Formatting.Indented);
        }
        catch (JsonException e)
        {
            return $"Помилка: {e.Message}";
        }
    }
    
    static void Main()
    {
        string rawJSON = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
        Console.WriteLine(FormatJSON(rawJSON));
    }
}
// Форматування JSON на Go
package main

import (
    "encoding/json"
    "fmt"
)

func formatJSON(jsonString string) string {
    var parsedData interface{}
    err := json.Unmarshal([]byte(jsonString), &parsedData)
    if err != nil {
        return fmt.Sprintf("Помилка: %s", err.Error())
    }
    
    formattedBytes, err := json.MarshalIndent(parsedData, "", "  ")
    if err != nil {
        return fmt.Sprintf("Помилка: %s", err.Error())
    }
    
    return string(formattedBytes)
}

func main() {
    rawJSON := `{"name":"John","age":30,"city":"New York"}`
    fmt.Println(formatJSON(rawJSON))
}

Крайні випадки та міркування

Коли ви працюєте з форматуванням JSON, будьте уважні до цих потенційних викликів:

Великі файли JSON

Дуже великі файли JSON (декілька мегабайт або більше) можуть викликати проблеми з продуктивністю в браузерних форматерах. Для таких випадків:

  • Розгляньте можливість використання інструментів командного рядка, таких як jq
  • Розділіть JSON на менші частини
  • Використовуйте поточні парсери для обробки без завантаження всього файлу в пам'ять

Глибоко вкладені структури

Надзвичайно вкладений JSON (більше 10-20 рівнів) може стати важким для навігації, навіть якщо його відформатувати. У таких випадках:

  • Розгляньте можливість спрощення структури, якщо це можливо
  • Використовуйте згортаючі переглядачі JSON
  • Витягніть і працюйте з конкретними секціями JSON

Спеціальні символи та Юнікод

JSON підтримує Юнікод, але деякі форматери можуть мати проблеми з певними символами:

  • Переконайтеся, що ваш форматер правильно обробляє емодзі та інші символи Юнікоду
  • Будьте обережні з контрольними символами та ескейп-послідовностями
  • Перевірте, що відформатований вихід зберігає всі оригінальні символи

Числова точність

JSON не вказує точність для чисел, що може призвести до проблем з дуже великими цілими числами або значеннями з плаваючою комою:

  • Будьте обережні, що деякі реалізації JavaScript можуть втратити точність для цілих чисел понад 53 біти
  • Розгляньте можливість використання рядкових представлень для точних числових значень
  • Тестуйте з екстремальними значеннями, якщо ваш додаток вимагає високої точності

Порожні об'єкти та масиви

Дійсний JSON включає порожні об'єкти {} і масиви [], які повинні бути належним чином відформатовані:

  • Порожні об'єкти повинні з'являтися як {}
  • Порожні масиви повинні з'являтися як []
  • Вкладені порожні структури повинні зберігати належний відступ

Посилання

  1. JSON.org - Офіційний веб-сайт специфікації JSON
  2. RFC 8259 - Формат обміну даними JSON
  3. MDN Web Docs: JSON - Всеосяжна документація про JSON у JavaScript
  4. JSON Lint - Популярний онлайн-валідатор JSON
  5. jq - Легкий і гнучкий процесор JSON командного рядка
Зворотній зв'язок