РОБОТА З JSON
Курс: Python для аналітиків з нуля
0. ВІД СИНТАКСИСУ ДО ДАНИХ
Міст між блоками
Блок 1 закінчився — ти знаєш змінні, списки, словники, цикли, функції, обробку помилок. Це фундамент.
Блок 2 починається — тепер працюємо з реальними даними: JSON експорти, таблиці, API, карти, звіти.
Що змінюється:
Раніше: навчальні приклади (список частот, словник позивних)
Тепер: реальні файли (Telegram експорт на 500 повідомлень)- Раніше: писав код з нуля
Тепер: використовуєш бібліотеки (pandas, requests, folium)
Раніше: один скрипт = одна задача
Тепер: пайплайн з кількох кроків (завантажити → обробити → візуалізувати → звіт)Як використовувати знання з Блоку 1:
# JSON — це словники та списки (модуль 1.5)Чому JSON першим у блоці 2:
- Telegram/Signal експорти — JSON
- Публічні API — JSON
- Конфігурація програм — JSON
- Обмін даними між системами — JSON
JSON — це просто словники та списки у файлі. Ти вже знаєш словники (1.5), тепер навчишся читати їх з файлів.
1. ЩО НАВЧИМОСЯ РОБИТИ
Задача: витягнути геомітки з експорту Telegram, побудувати карту активності по районах.
JSON — основний формат обміну даними в OSINT. Telegram, Signal, публічні API — все повертає JSON. Навчимося читати, фільтрувати, витягувати потрібне.
2. ТЕРМІНОЛОГІЯ
JSON (JavaScript Object Notation)Текстовий формат для структурованих даних. Читається людиною, парситься машиною.
Ключ (key)Назва поля в словнику. Завжди рядок у лапках: "timestamp", "latitude"
Значення (value)Дані за ключем. Може бути: число, рядок, список, вкладений словник, True/False, null
json.load(f)Прочитати JSON з файлу
json.loads(string)Розпарсити JSON з рядка
json.dump(data, f)Записати Python-структуру у файл як JSON
3. ТЕОРІЯ
3.1 Структура JSON
JSON — це словники та списки:
{У Python це стає:
data = {Відповідності типів:
- JSON {} → Python dict
- JSON [] → Python list
- JSON "text" → Python str
- JSON 123 → Python int
- JSON true/false → Python True/False
- JSON null → Python None
3.2 Читання JSON
Два способи:
import jsonВажливо: encoding='utf-8' для кирилиці!
3.3 Доступ до даних
Як зі словником:
data = {Безпечний доступ (якщо ключа може не бути):
# Якщо "signal" відсутній — поверне None3.4 Типова структура Telegram export
Telegram повертає JSON такої структури:
{Нас цікавить: messages → кожне повідомлення → location_information
4. КОД З КОМЕНТАРЯМИ
Повний скрипт: витягти геомітки з Telegram export:
import json5. РОЗБІР ПО РЯДКАХ
json.load(f)
Читає файл, повертає Python-структуру (словник або список)
for message in data['messages']:data['messages'] — список повідомлень. Перебираємо кожне.
if 'location_information' in message:Перевірка: чи є ключ у словнику. Не всі повідомлення мають геомітки.
message.get('from', 'Unknown')Безпечний доступ: якщо 'from' відсутній — поверне 'Unknown'
json.dump(output, f, ensure_ascii=False, indent=2)Записує у файл. ensure_ascii=False — зберігає кирилицю. indent=2 — форматує читабельно.
enumerate(locations, 1)Нумерація з 1 (не з 0). Повертає пари: (1, елемент), (2, елемент)...
6. ЗАВДАННЯ 1: ЗНАЙТИ ПОМИЛКУ
У коді є проблема:
import jsonВідповіді:
1. Немає encoding='utf-8' — кирилиця не прочитається
2. Немає перевірки чи існує 'location' — код впаде на першому повідомленні без геомітки
Виправлено:
with open('data.json', 'r', encoding='utf-8') as f:7. ЗАВДАННЯ 2: ПРОМПТ ДЛЯ AI
Задача: парсити JSON з Signal (інша структура ніж Telegram)Приклад промпту:
Напиши Python скрипт для парсингу Signal експорту. Структура JSON:
{Треба:
- Витягти всі повідомлення з усіх розмов
- Конвертувати timestamp у читабельну дату
- Відфільтрувати повідомлення за останні 7 днів
- Зберегти у CSV: дата, відправник, текст
Використовуй json, datetime, csv. Додай коментарі.
8. ЗАВДАННЯ 3 (ОПЦІОНАЛЬНО)
Реальна задача: групування по координатах
Дано: JSON з 500 геомітками. Знайти найактивніший квадрат 10×10 км.
Підказки:
- 1° широти ≈ 111 км
Округлити координати до 0.1° (≈11 км)- Використати Counter з collections
- Показати топ-5 квадратів
from collections import Counter9. РЕФЛЕКСІЯ
Я розумію структуру JSON
Я вмію читати JSON через json.load()
Я знаю різницю load() та loads()Я використовую encoding='utf-8'
Я перевіряю наявність ключів перед доступом
10. ЩО ДАЛІ
Модуль 2.2: CSV vs JSON vs Excel — коли що використовувати
Модуль 2.3: Pandas — таблиці на стероїдах
Головна думка: JSON — це словники та списки з файлу. Читаєш, фільтруєш, зберігаєш. 80% OSINT-задач починаються з парсингу JSON.