Ответ
JSON (JavaScript Object Notation) — это легковесный текстовый формат для обмена структурированными данными, основанный на синтаксисе объектов JavaScript. Он независим от языка и широко используется в API, конфигурационных файлах и для хранения данных.
Основные синтаксические правила:
- Данные — это пары «ключ: значение».
- Ключи всегда должны быть строками, заключенными в двойные кавычки (
"). - Значения могут быть:
- Строкой (в двойных кавычках):
"Hello" - Числом (целым или с плавающей точкой):
42,3.14 - Логическим значением:
true,false - null:
null - Массивом (упорядоченный список в квадратных скобках
[]):[1, 2, 3] - Объектом (набор пар ключ-значение в фигурных скобках
{}):{"key": "value"}
- Строкой (в двойных кавычках):
- Данные разделяются запятыми (
,). - Пробелы (пробел, табуляция, перенос строки) между элементами игнорируются парсерами.
Пример корректного JSON:
{
"user": {
"id": 1,
"name": "Alice",
"isActive": true,
"skills": ["QA", "Automation", "API Testing"],
"projects": [
{"id": 101, "title": "Web App"},
{"id": 102, "title": "Mobile App"}
],
"metadata": null
}
}
Чем JSON отличается от XML?
- JSON менее многословен, проще для чтения и парсинга, напрямую отображается в структуры данных языков программирования (объекты, словари, списки).
- XML поддерживает комментарии, пространства имён, более сложную валидацию через схемы (XSD), но более «тяжелый».
Работа с JSON в Python:
import json
# Сериализация Python-объекта в JSON-строку
data = {"name": "Alice", "age": 30}
json_string = json.dumps(data, indent=2) # indent для красивого форматирования
print(json_string)
# Десериализация JSON-строки в Python-объект
parsed_data = json.loads(json_string)
print(parsed_data["name"]) # Alice
# Чтение из файла и запись в файл
with open('data.json', 'r') as f:
data_from_file = json.load(f)
with open('output.json', 'w') as f:
json.dump(data_from_file, f, indent=4) Ответ 18+ 🔞
А, JSON, ёпта! Ну это ж та самая штука, которая везде торчит, как ядрёна вошь! Формат для данных, который все используют, потому что он простой, блядь, как три копейки. Представь, что тебе надо передать данные из одной программы в другую — так вот JSON это как записка, которую они друг другу кидают, только по всем правилам, без косяков.
Основные правила, без которых нихуя не получится:
- Всё строится на парочках «ключ: значение». Как в словаре, блядь.
- Ключи — это всегда, сука, строки в двойных кавычках. Не одинарных, не без кавычек — только двойные, и точка.
"name", а не просто name. - Значения могут быть разными, тут посвободнее:
- Строка (тоже в двойных кавычках, блядь):
"Привет" - Число (хоть целое, хоть с точкой):
100500,3.1415 - Булево значение (правда или ложь):
true,false - Пустота:
null - Массив (список в квадратных скобках
[]):[1, "два", false] - Объект (ещё одна куча ключей-значений в фигурных скобках
{}):{"ключ": "значение"}
- Строка (тоже в двойных кавычках, блядь):
- Элементы друг от друга отбивай запятыми (
,). Забыл запятую — получишь ошибку парсинга, и будет тебе волнение ебать. - Пробелы, табы, переносы строк — похуй. Парсер их проигнорит, главное чтобы структура была целой.
Вот смотри, как выглядит нормальный, не кривой JSON:
{
"user": {
"id": 1,
"name": "Василий",
"isActive": true,
"skills": ["Тестирование", "Автоматизация", "API"],
"projects": [
{"id": 101, "title": "Веб-приложение"},
{"id": 102, "title": "Мобильное приложение"}
],
"metadata": null
}
}
А чем он лучше этого вашего XML, спросишь?
- JSON — лёгкий, не такой многословный, читается почти как обычный текст, и в коде превращается в родные структуры (словари, списки) за секунду.
- XML — это ёперный театр с комментариями, пространствами имён и валидацией по схемам. Мощно, но овердохуища лишнего.
Как с этим работать в Python, чтобы не облажаться?
import json
# Чтобы превратить свой питоновский словарь в JSON-строку
data = {"name": "Василий", "age": 30}
json_string = json.dumps(data, indent=2) # indent делает отступы, чтоб красиво было
print(json_string) # Смотри, какая красота получается
# Чтобы из JSON-строки обратно получить словарь
parsed_data = json.loads(json_string)
print(parsed_data["name"]) # Выведет 'Василий', если всё правильно
# Чтение из файла и запись в файл — тоже не бином Ньютона
with open('data.json', 'r', encoding='utf-8') as f: # encoding не забудь, а то кракозябры будут
data_from_file = json.load(f)
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(data_from_file, f, indent=4, ensure_ascii=False) # ensure_ascii=False чтобы кириллица нормально записалась
Вот и вся магия, блядь. Главное — кавычки двойные ставить и запятые не терять, а то будет тебе не JSON, а пиздопроебибна какая-то.