Файл JSON: Полное руководство по работе с .json файлами
Узнайте всё о файлах JSON: как их создавать, открывать, редактировать и использовать в различных приложениях и языках программирования.
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# Файл JSON: Полное руководство по работе с .json файлами
Файлы JSON (.json) стали неотъемлемой частью современной разработки программного обеспечения. Они используются для хранения конфигураций, обмена данными между приложениями и структурирования информации. В этом подробном руководстве мы рассмотрим всё, что нужно знать о файлах JSON.
Что такое файл JSON?
Файл JSON - это текстовый файл с расширением .json, который содержит данные в формате JavaScript Object Notation. Эти файлы используют стандартный текстовый формат, что делает их читаемыми как для человека, так и для машины.
Основные характеристики
- Расширение:
.json - MIME-тип:
application/json - Кодировка: UTF-8 (рекомендуется)
- Формат: Текстовый, структурированный
Структура файла JSON
Простой пример
Создадим файл config.json:
{
"appName": "Мое приложение",
"version": "1.0.0",
"language": "ru",
"debug": false
}
Сложная структура
Файл users.json с более сложной структурой:
{
"users": [
{
"id": 1,
"name": "Анна Иванова",
"email": "anna@example.com",
"roles": ["admin", "editor"],
"settings": {
"theme": "dark",
"notifications": true,
"language": "ru"
},
"createdAt": "2025-01-15T10:30:00Z"
},
{
"id": 2,
"name": "Петр Смирнов",
"email": "petr@example.com",
"roles": ["user"],
"settings": {
"theme": "light",
"notifications": false,
"language": "ru"
},
"createdAt": "2025-02-20T14:45:00Z"
}
],
"totalCount": 2,
"lastUpdated": "2026-01-26T12:00:00Z"
}
Как создать файл JSON
Метод 1: Использование текстового редактора
.jsonПример простого файла product.json:
{
"id": 12345,
"name": "Ноутбук ASUS",
"price": 75000,
"currency": "RUB",
"available": true,
"categories": ["Электроника", "Компьютеры"],
"specifications": {
"brand": "ASUS",
"model": "ROG Strix G15",
"processor": "AMD Ryzen 7",
"ram": "16GB",
"storage": "512GB SSD"
}
}
Метод 2: Программное создание
JavaScript/Node.js
const fs = require('fs');
const data = {
name: "Иван",
age: 30,
city: "Москва"
};
// Запись в файл
fs.writeFileSync('user.json', JSON.stringify(data, null, 2));
console.log('Файл создан успешно!');
Python
import json
data = {
"name": "Иван",
"age": 30,
"city": "Москва"
}
# Запись в файл
with open('user.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print("Файл создан успешно!")
C#
using System;
using System.IO;
using System.Text.Json;
var data = new {
Name = "Иван",
Age = 30,
City = "Москва"
};
string jsonString = JsonSerializer.Serialize(data, new JsonSerializerOptions {
WriteIndented = true,
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
});
File.WriteAllText("user.json", jsonString);
Console.WriteLine("Файл создан успешно!");
Как открыть файл JSON
Способ 1: Текстовые редакторы
Рекомендуемые редакторы:Способ 2: Веб-браузеры
Современные браузеры могут отображать JSON-файлы:
- Google Chrome (с расширением JSON Formatter)
- Mozilla Firefox (встроенный просмотр)
- Microsoft Edge
Способ 3: Онлайн-инструменты
- JSONLint - валидация и форматирование
- JSON Editor Online - визуальное редактирование
- JSON Formatter - красивое отображение
- Big JSON - для больших файлов
Способ 4: Программное чтение
JavaScript/Node.js
const fs = require('fs');
// Синхронное чтение
const data = JSON.parse(fs.readFileSync('config.json', 'utf8'));
console.log(data);
// Асинхронное чтение
fs.readFile('config.json', 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
return;
}
const jsonData = JSON.parse(data);
console.log(jsonData);
});
Python
import json
# Чтение файла
with open('config.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)
Java
import com.google.gson.Gson;
import java.io.FileReader;
public class ReadJSON {
public static void main(String[] args) {
try {
Gson gson = new Gson();
FileReader reader = new FileReader("config.json");
Config config = gson.fromJson(reader, Config.class);
System.out.println(config);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Редактирование файлов JSON
Лучшие практики редактирования
Пример редактирования в VS Code
Shift + Alt + F для форматированияПрограммное редактирование
Обновление значения
const fs = require('fs');
// Чтение
let config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
// Изменение
config.version = "2.0.0";
config.lastModified = new Date().toISOString();
// Запись
fs.writeFileSync('config.json', JSON.stringify(config, null, 2));
Добавление нового поля
import json
# Чтение
with open('config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
# Добавление нового поля
config['newFeature'] = True
config['features'] = ['feature1', 'feature2']
# Запись
with open('config.json', 'w', encoding='utf-8') as f:
json.dump(config, f, ensure_ascii=False, indent=2)
Распространенные использования файлов JSON
1. Конфигурационные файлы
package.json (Node.js)
{
"name": "my-app",
"version": "1.0.0",
"description": "Моё приложение",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "jest",
"build": "webpack"
},
"dependencies": {
"express": "^4.18.0",
"mongoose": "^7.0.0"
},
"devDependencies": {
"jest": "^29.0.0",
"webpack": "^5.75.0"
},
"keywords": ["javascript", "nodejs"],
"author": "Ваше имя",
"license": "MIT"
}
tsconfig.json (TypeScript)
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"lib": ["ES2020"],
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"declaration": true,
"sourceMap": true
},
"include": ["src/*/"],
"exclude": ["node_modules", "dist"]
}
2. Данные приложения
База данных задач
{
"tasks": [
{
"id": 1,
"title": "Написать отчет",
"description": "Подготовить ежемесячный отчет",
"status": "in-progress",
"priority": "high",
"assignee": "Иван Иванов",
"dueDate": "2026-01-30",
"tags": ["отчет", "важное"],
"createdAt": "2026-01-20T09:00:00Z",
"updatedAt": "2026-01-26T14:30:00Z"
},
{
"id": 2,
"title": "Проверить email",
"description": "Ответить на письма клиентов",
"status": "completed",
"priority": "medium",
"assignee": "Мария Петрова",
"dueDate": "2026-01-25",
"tags": ["коммуникация"],
"createdAt": "2026-01-23T10:00:00Z",
"updatedAt": "2026-01-25T16:00:00Z"
}
],
"metadata": {
"totalTasks": 2,
"completedTasks": 1,
"lastSync": "2026-01-26T15:00:00Z"
}
}
3. Локализация
ru.json (Русский язык)
{
"common": {
"welcome": "Добро пожаловать",
"goodbye": "До свидания",
"yes": "Да",
"no": "Нет",
"save": "Сохранить",
"cancel": "Отмена",
"delete": "Удалить",
"edit": "Редактировать"
},
"errors": {
"required": "Это поле обязательно",
"invalidEmail": "Некорректный email",
"passwordTooShort": "Пароль должен содержать минимум 8 символов",
"serverError": "Ошибка сервера. Попробуйте позже"
},
"navigation": {
"home": "Главная",
"about": "О нас",
"contact": "Контакты",
"profile": "Профиль"
}
}
4. API-ответы
Ответ REST API
{
"status": "success",
"code": 200,
"message": "Данные получены успешно",
"data": {
"user": {
"id": 12345,
"username": "ivan_petrov",
"email": "ivan@example.com",
"profile": {
"firstName": "Иван",
"lastName": "Петров",
"avatar": "https://example.com/avatars/12345.jpg",
"bio": "Разработчик программного обеспечения"
},
"stats": {
"posts": 42,
"followers": 1523,
"following": 235
}
}
},
"timestamp": "2026-01-26T15:30:00Z",
"requestId": "req_abc123xyz"
}
Работа с большими файлами JSON
Проблемы с большими файлами
- Медленная загрузка в память
- Трудно редактировать в обычных редакторах
- Длительное время парсинга
Решения
1. Потоковая обработка (Node.js)
const fs = require('fs');
const JSONStream = require('JSONStream');
const stream = fs.createReadStream('large-file.json');
const parser = JSONStream.parse('users.');
stream.pipe(parser);
parser.on('data', (user) => {
console.log('Обработка пользователя:', user.name);
// Обработка каждого пользователя по отдельности
});
parser.on('end', () => {
console.log('Обработка завершена');
});
2. Разбиение на части
const fs = require('fs');
// Чтение большого файла порциями
const data = JSON.parse(fs.readFileSync('large-file.json', 'utf8'));
// Разбиение на меньшие файлы
const chunkSize = 1000;
const users = data.users;
for (let i = 0; i < users.length; i += chunkSize) {
const chunk = users.slice(i, i + chunkSize);
const filename = users-chunk-${Math.floor(i / chunkSize)}.json;
fs.writeFileSync(filename, JSON.stringify(chunk, null, 2));
}
3. Использование специализированных инструментов
- jq - командная строка для обработки JSON
- Big JSON Viewer - для просмотра больших файлов
- JSON Editor - с поддержкой больших файлов
Пример использования jq
# Извлечь только имена пользователей
jq '.users[].name' large-file.json
# Фильтрация по условию
jq '.users[] | select(.age > 25)' large-file.json
# Подсчет элементов
jq '.users | length' large-file.json
Валидация файлов JSON
Онлайн-валидаторы
Программная валидация
JavaScript
function isValidJSON(str) {
try {
JSON.parse(str);
return true;
} catch (e) {
return false;
}
}
const content = fs.readFileSync('data.json', 'utf8');
if (isValidJSON(content)) {
console.log('JSON корректен');
} else {
console.log('JSON содержит ошибки');
}
Python
import json
def is_valid_json(filepath):
try:
with open(filepath, 'r', encoding='utf-8') as f:
json.load(f)
return True
except json.JSONDecodeError as e:
print(f"Ошибка: {e}")
return False
except FileNotFoundError:
print("Файл не найден")
return False
if is_valid_json('data.json'):
print("JSON корректен")
else:
print("JSON содержит ошибки")
Валидация по схеме
const Ajv = require('ajv');
const ajv = new Ajv();
const schema = {
type: "object",
properties: {
name: { type: "string" },
age: { type: "number", minimum: 0 },
email: { type: "string", format: "email" }
},
required: ["name", "email"]
};
const data = {
name: "Иван",
age: 30,
email: "ivan@example.com"
};
const validate = ajv.compile(schema);
const valid = validate(data);
if (valid) {
console.log('Данные соответствуют схеме');
} else {
console.log('Ошибки валидации:', validate.errors);
}
Безопасность файлов JSON
1. Не храните конфиденциальные данные в открытом виде
❌ Плохо:
{
"database": {
"host": "localhost",
"username": "admin",
"password": "password123"
}
}
✅ Хорошо:
{
"database": {
"host": "localhost",
"credentialsFile": "/secure/db-credentials.encrypted"
}
}
2. Используйте переменные окружения
// config.json - только структура
{
"database": {
"host": "${DB_HOST}",
"port": "${DB_PORT}"
}
}
// Загрузка с подстановкой
const config = JSON.parse(
fs.readFileSync('config.json', 'utf8')
.replace(/${(w+)}/g, (_, key) => process.env[key])
);
3. Валидация входных данных
function sanitizeJSON(data) {
// Удаление потенциально опасных полей
const sanitized = { ...data };
delete sanitized.__proto__;
delete sanitized.constructor;
return sanitized;
}
4. Ограничение размера файла
const MAX_SIZE = 10 1024 1024; // 10 MB
function readJSONSafely(filepath) {
const stats = fs.statSync(filepath);
if (stats.size > MAX_SIZE) {
throw new Error('Файл слишком большой');
}
return JSON.parse(fs.readFileSync(filepath, 'utf8'));
}
Оптимизация файлов JSON
1. Минификация
// Обычный JSON (читаемый)
const readable = JSON.stringify(data, null, 2);
// Минифицированный JSON (компактный)
const minified = JSON.stringify(data);
console.log('Читаемый размер:', readable.length);
console.log('Минифицированный размер:', minified.length);
2. Сжатие
const zlib = require('zlib');
const fs = require('fs');
const data = { / большой объект */ };
const jsonString = JSON.stringify(data);
// Сжатие GZIP
zlib.gzip(jsonString, (err, compressed) => {
if (err) throw err;
fs.writeFileSync('data.json.gz', compressed);
console.log('Исходный размер:', jsonString.length);
console.log('Сжатый размер:', compressed.length);
});
3. Удаление избыточности
❌ Избыточный JSON:
{
"users": [
{
"id": 1,
"firstName": "Иван",
"lastName": "Петров",
"country": "Россия"
},
{
"id": 2,
"firstName": "Мария",
"lastName": "Сидорова",
"country": "Россия"
}
]
}
✅ Оптимизированный JSON:
{
"country": "Россия",
"users": [
{
"id": 1,
"firstName": "Иван",
"lastName": "Петров"
},
{
"id": 2,
"firstName": "Мария",
"lastName": "Сидорова"
}
]
}
Распространенные ошибки
1. Запятая после последнего элемента
❌ Неправильно:
{
"name": "Иван",
"age": 30,
}
✅ Правильно:
{
"name": "Иван",
"age": 30
}
2. Одинарные кавычки
❌ Неправильно:
{
'name': 'Иван'
}
✅ Правильно:
{
"name": "Иван"
}
3. Неэкранированные спецсимволы
❌ Неправильно:
{
"path": "C:UsersIvan"
}
✅ Правильно:
{
"path": "C:\Users\Ivan"
}
Инструменты командной строки
jq - Процессор JSON
# Красивый вывод
cat data.json | jq .
# Извлечение значения
jq '.users[0].name' data.json
# Фильтрация
jq '.users[] | select(.age > 25)' data.json
# Преобразование
jq '.users | map({name, email})' data.json
json-server - Фейковый REST API
# Установка
npm install -g json-server
# Запуск сервера из db.json
json-server --watch db.json --port 3000
Заключение
Файлы JSON - это мощный и гибкий способ хранения и обмена данными. Понимание того, как создавать, читать, редактировать и оптимизировать JSON-файлы, является важным навыком для любого разработчика.
Ключевые моменты:
- JSON-файлы просты в создании и редактировании
- Множество инструментов доступно для работы с JSON
- Всегда валидируйте JSON перед использованием
- Соблюдайте лучшие практики безопасности
- Оптимизируйте большие файлы для лучшей производительности
Практикуйтесь с реальными файлами JSON, экспериментируйте с различными инструментами, и вскоре работа с JSON-файлами станет для вас второй натурой.
Похожие статьи
Что такое JSON? Полное руководство для начинающих
Узнайте, что такое JSON, его синтаксис, типы данных и области применения. Полное руководство для начинающих по JavaScript Object Notation.
Как форматировать JSON: Полное руководство
Научитесь правильно форматировать JSON для улучшения читаемости. Инструменты, методы и лучшие практики форматирования JSON.
Лучшие инструменты JSON онлайн в 2026 году
Подробный обзор лучших онлайн инструментов для работы с JSON: валидаторы, форматеры, редакторы и конвертеры.