Odczytywanie i zapisywanie JSON
JSON.parse i generate
Odczytywanie i zapisywanie JSON to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Czym jest JSON
JSON (JavaScript Object Notation) to lekki tekstowy format wymiany danych. Dobrze odwzorowuje się na obiekty Hash i tablice Ruby.
Aby go używać, należy dołączyć bibliotekę json.
require 'json'
data = { name: 'Ruby', year: 1995 }
puts(JSON.generate(data))Analizowanie tekstu JSON
JSON.parse przekształca ciąg JSON w obiekty Ruby: obiekty stają się obiektami Hash, a tablice obiektami Array.
require 'json'
text = '{"name":"Ruby","year":1995}'
h = JSON.parse(text)
puts(h['name'])
puts(h['year'])Generowanie tekstu JSON
JSON.generate (lub to_json wywołane na obiektach) konwertuje dane Ruby na zwięzły ciąg JSON.
require 'json'
arr = [1, 2, { ok: true }]
puts(arr.to_json)Formatowanie czytelne dla człowieka
JSON.pretty_generate tworzy czytelny dla człowieka, wcięty tekst JSON, idealny do plików konfiguracyjnych i debugowania.
require 'json'
data = { name: 'Ruby', tags: ['fun', 'oop'] }
puts(JSON.pretty_generate(data))Klucze typu Symbol podczas analizowania
Domyślnie przeanalizowane klucze są obiektami typu String. Należy przekazać symbolize_names: true, aby zamiast nich otrzymać klucze typu Symbol.
require 'json'
h = JSON.parse('{"name":"Ruby"}', symbolize_names: true)
puts(h[:name])Struktury zagnieżdżone
JSON obsługuje zagnieżdżanie. Analizowanie odtwarza pełne drzewo obiektów Hash i Array.
require 'json'
text = '{"user":{"name":"Ada","roles":["admin","dev"]}}'
h = JSON.parse(text)
puts(h['user']['name'])
puts(h['user']['roles'][1])Odwzorowanie typów
Typy JSON odwzorowują się na typy Ruby:
- object → Hash, array → Array
- string → String, number → 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)Zapisywanie JSON w pliku
Połączenie pretty_generate z File.write pozwala zapisać dane na dysku.
require 'json'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'data.json')
File.write(path, JSON.pretty_generate({ ok: true }))
puts(File.read(path))Odczytywanie JSON z pliku
Należy odczytać zawartość pliku i przeanalizować ją w jednym kroku.
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'])Obsługa błędów analizowania
Niepoprawny JSON zgłasza wyjątek JSON::ParserError. Należy go przechwycić, aby poprawnie obsłużyć błędne dane wejściowe.
require 'json'
begin
JSON.parse('{not valid}')
rescue JSON::ParserError => e
puts 'Invalid JSON caught'
endKonwersja w obie strony
Generowanie, a następnie analizowanie powinno zwrócić równoważne dane, co jest przydatnym testem poprawności.
require 'json'
original = { id: 7, tags: ['a', 'b'] }
back = JSON.parse(original.to_json, symbolize_names: true)
puts(back == original)Szybkie sprawdzenie
Która opcja sprawia, że JSON.parse zwraca klucze typu Symbol zamiast kluczy typu String?
Podsumowanie: odczytywanie i zapisywanie JSON
Mogą Państwo przesyłać dane do JSON i z powrotem:
JSON.parsekonwertuje ciąg znaków na obiekty Rubyto_json/JSON.generatetworzą zwięzły JSONpretty_generatetworzy czytelne dane wyjściowesymbolize_names: truetworzy klucze typu Symbol- Należy przechwytywać
JSON::ParserErrordla błędnych danych wejściowych
require 'json'
puts(JSON.parse('[1,2,3]').sum)Często zadawane pytania
Czy lekcja „Odczytywanie i zapisywanie JSON” jest bezpłatna?
Tak — pełny tekst „Odczytywanie i zapisywanie JSON” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Odczytywanie i zapisywanie JSON”?
JSON.parse i generate Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Odczytywanie i zapisywanie JSON”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odczytywanie i zapisywanie JSON
- Praca z CSV
- Konfiguracja YAML
- Wybór formatu