0Pricing
Ruby Academy · Урок

Чтение и запись JSON

JSON.parse и generate

«Чтение и запись JSON» — бесплатный урок Ruby Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Что такое JSON?

JSON (JSON — это не язык разметки) — лёгкий текстовый формат для обмена данными. Его структура хорошо соответствует хешам и массивам Ruby.

Подключите библиотеку json, чтобы использовать этот формат.

require 'json'
data = { name: 'Ruby', year: 1995 }
puts(JSON.generate(data))

Разбор текста JSON

JSON.parse преобразует строку JSON в объекты Ruby: объекты становятся хешами, а массивы — массивами.

require 'json'
text = '{"name":"Ruby","year":1995}'
h = JSON.parse(text)
puts(h['name'])
puts(h['year'])

Создание текста JSON

JSON.generate (или to_json для объектов) преобразует данные Ruby в компактную строку JSON.

require 'json'
arr = [1, 2, { ok: true }]
puts(arr.to_json)

Красивое форматирование

JSON.pretty_generate создаёт удобочитаемый JSON с отступами, идеально подходящий для конфигурационных файлов и отладки.

require 'json'
data = { name: 'Ruby', tags: ['fun', 'oop'] }
puts(JSON.pretty_generate(data))

Ключи-символы при разборе

По умолчанию ключи после разбора имеют тип String. Передайте symbolize_names: true, чтобы вместо этого получить ключи типа Symbol.

require 'json'
h = JSON.parse('{"name":"Ruby"}', symbolize_names: true)
puts(h[:name])

Вложенные структуры

JSON поддерживает вложенность. Разбор восстанавливает полное дерево хешей и массивов.

require 'json'
text = '{"user":{"name":"Ada","roles":["admin","dev"]}}'
h = JSON.parse(text)
puts(h['user']['name'])
puts(h['user']['roles'][1])

Соответствие типов

Типы JSON соответствуют типам Ruby:

  • объект → Hash, массив → Array
  • строка → String, число → Integer/Float
  • логическое значение true/false → true/false, null → nil
require 'json'
h = JSON.parse('{"a":1,"b":1.5,"c":null,"d":true}')
puts(h['a'].class)
puts(h['c'].inspect)

Запись JSON в файл

Объедините pretty_generate с File.write, чтобы сохранить данные на диске.

require 'json'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'data.json')
File.write(path, JSON.pretty_generate({ ok: true }))
puts(File.read(path))

Чтение JSON из файла

Прочитайте содержимое файла и разберите его за один шаг.

require 'json'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'cfg.json')
File.write(path, '{"port":8081}')
cfg = JSON.parse(File.read(path))
puts(cfg['port'])

Обработка ошибок разбора

Некорректный JSON вызывает JSON::ParserError. Перехватите эту ошибку, чтобы корректно обработать неверные входные данные.

require 'json'
begin
  JSON.parse('{not valid}')
rescue JSON::ParserError => e
  puts 'Invalid JSON caught'
end

Обратное преобразование

После создания и последующего разбора должны получиться эквивалентные данные — это полезная базовая проверка.

require 'json'
original = { id: 7, tags: ['a', 'b'] }
back = JSON.parse(original.to_json, symbolize_names: true)
puts(back == original)

Быстрая проверка

Какой вариант заставляет JSON.parse возвращать ключи типа Symbol вместо ключей типа String?

Повторение: чтение и запись JSON

Вы умеете перемещать данные в JSON и обратно:

  • JSON.parse преобразует строку в объекты Ruby
  • to_json / JSON.generate создают компактный JSON
  • pretty_generate создаёт удобочитаемый вывод
  • symbolize_names: true создаёт ключи типа Symbol
  • Перехватывайте JSON::ParserError при неверных входных данных
require 'json'
puts(JSON.parse('[1,2,3]').sum)

Часто задаваемые вопросы

Урок «Чтение и запись JSON» бесплатный?

Да — полный текст урока «Чтение и запись JSON» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Чтение и запись JSON»?

JSON.parse и generate Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Чтение и запись JSON»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Чтение и запись JSON
  2. Работа с CSV
  3. Конфигурация YAML
  4. Выбор формата
← Назад к Ruby Academy