Ruby Academy · Lektion

JSON-APIs

JSON zurückgeben

Lektion 3 von 413 Schritte

JSON-APIs ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum JSON-APIs?

JSON ist das Standarddatenformat für Web-APIs. Clients senden und empfangen strukturierte Daten statt HTML.

  • Sprachunabhängig
  • Lässt sich problemlos auf Ruby-Hashes und -Arrays abbilden
  • Leichtgewichtig und für Menschen lesbar

Rubys Standardbibliothek verarbeitet JSON über das Modul json.

require 'json'

data = { name: 'Ada', langs: ['Ruby', 'Python'] }
puts data.to_json

Ruby in JSON konvertieren

Rufen Sie to_json für einen Hash oder ein Array auf oder verwenden Sie JSON.generate.

  • Symbole und Zeichenketten werden zu JSON-Schlüsseln
  • Verschachtelte Strukturen werden rekursiv konvertiert
require 'json'

user = { id: 1, active: true, tags: ['admin'] }
puts JSON.generate(user)

JSON formatiert ausgeben

Für eine besser lesbare Ausgabe verwenden Sie JSON.pretty_generate.

  • Fügt Einrückungen und Zeilenumbrüche hinzu
  • Ideal für Debugging und Logs
  • Vermeiden Sie dies in Produktionsantworten, um Bytes zu sparen
require 'json'

config = { server: { host: 'localhost', port: 4567 } }
puts JSON.pretty_generate(config)

JSON-Eingaben parsen

Verwenden Sie JSON.parse, um eine eingehende JSON-Zeichenkette in Ruby-Objekte umzuwandeln.

  • Schlüssel sind standardmäßig Zeichenketten
  • Übergeben Sie symbolize_names: true für Symbolschlüssel
require 'json'

raw = '{"name": "Ada", "age": 30}'
data = JSON.parse(raw)
puts data['name']
puts data['age']

Symbolschlüssel

Symbolschlüssel sind praktisch und lassen sich geringfügig schneller nachschlagen.

  • Aktivieren Sie sie mit symbolize_names: true
  • Seien Sie vorsichtig, wenn nicht vertrauenswürdige Eingaben viele Symbole erzeugen
require 'json'

raw = '{"city": "Istanbul"}'
data = JSON.parse(raw, symbolize_names: true)
puts data[:city]

JSON aus Sinatra zurückgeben

Setzen Sie in einer Sinatra-Route den Content-Type und geben Sie einen JSON-String zurück.

  • content_type :json setzt den Header
  • Geben Sie hash.to_json als Body zurück
require 'sinatra'
require 'json'

get '/api/status' do
  content_type :json
  { status: 'ok', time: Time.now.to_i }.to_json
end

Den Body einer JSON-Anfrage lesen

Lesen Sie bei POST-APIs den unverarbeiteten Body und parsen Sie ihn.

  • request.body.read liefert den unverarbeiteten String
  • Parsen Sie ihn mit JSON.parse
require 'sinatra'
require 'json'

post '/api/users' do
  payload = JSON.parse(request.body.read)
  content_type :json
  { created: payload['name'] }.to_json
end

Einen Hash für API-Antworten erstellen

Halten Sie Antworten konsistent, indem Sie vor der Serialisierung einen strukturierten Hash erstellen.

  • Verschachteln Sie die Daten unter dem Schlüssel data
  • Fügen Sie Status und Metadaten hinzu
require 'json'

def api_response(data, status: 'ok')
  { status: status, data: data }.to_json
end

puts api_response({ id: 1, name: 'Ada' })

Parsing-Fehler behandeln

Fehlerhaftes JSON löst JSON::ParserError aus. Fangen Sie diesen Fehler immer ab.

  • Geben Sie dem Client 400 Bad Request zurück
  • Lassen Sie niemals zu, dass ein Parsing-Fehler die App zum Absturz bringt
require 'json'

begin
  JSON.parse('{ broken')
rescue JSON::ParserError => e
  puts "Invalid JSON: #{e.message}"
end

Arrays von Objekten serialisieren

Sammlungen werden ganz natürlich als JSON-Arrays serialisiert.

  • Ein Array aus Hashes wird zu einem Array aus Objekten
  • Verwenden Sie map, um jeden Datensatz passend zu formen
require 'json'

users = [{ id: 1, name: 'Ada' }, { id: 2, name: 'Bob' }]
output = users.map { |u| { name: u[:name] } }
puts output.to_json

Eigenes to_json für Objekte

Sie können einer Klasse beibringen, wie sie serialisiert wird, indem Sie to_json oder as_json definieren.

  • Wandeln Sie den internen Zustand in einen einfachen Hash um
  • Blenden Sie private Felder in der API aus
require 'json'

class User
  def initialize(id, name)
    @id = id
    @name = name
  end

  def to_json(*)
    { id: @id, name: @name }.to_json
  end
end

puts User.new(1, 'Ada').to_json

Schnelltest

Überprüfen Sie Ihr Wissen über JSON-APIs.

Zusammenfassung

Sie haben gelernt, JSON-APIs zu erstellen:

  • require 'json' aus der Standardbibliothek
  • to_json / JSON.generate serialisieren Ruby zu JSON
  • JSON.parse deserialisiert eingehendes JSON
  • Setzen Sie content_type :json in Sinatra-Routen
  • Fangen Sie JSON::ParserError immer ab

Als Nächstes erkunden Sie Rack und Middleware.

Kostenlos starten

Lerne Ruby mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
29
Lektionen
109

Häufig gestellte Fragen

Ist die Lektion „JSON-APIs“ kostenlos?

Ja — der vollständige Text von „JSON-APIs“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „JSON-APIs“?

JSON zurückgeben Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Ruby Academy zu starten?

Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „JSON-APIs“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?

Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Sinatra-Grundlagen
  2. Routen und Parameter
  3. JSON-APIs
  4. Middleware und Rack
← Zurück zu Ruby Academy