0Pricing
Ruby Academy · Lección

APIs JSON

Devuelva JSON

APIs JSON es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

¿Por qué utilizar API JSON?

JSON es el formato de datos estándar para las API web. Los clientes envían y reciben datos estructurados en lugar de HTML.

  • Es independiente del lenguaje
  • Se corresponde claramente con hashes y matrices de Ruby
  • Es ligero y fácil de leer

La biblioteca estándar de Ruby gestiona JSON mediante el módulo json.

require 'json'

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

Convertir Ruby a JSON

Llame a to_json en un hash o una matriz, o utilice JSON.generate.

  • Los símbolos y las cadenas se convierten en claves JSON
  • Las estructuras anidadas se convierten de forma recursiva
require 'json'

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

Imprimir JSON con formato

Para obtener una salida legible, utilice JSON.pretty_generate.

  • Añade sangría y saltos de línea
  • Es ideal para la depuración y los registros
  • Evítelo en las respuestas de producción para ahorrar bytes
require 'json'

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

Analizar la entrada JSON

Utilice JSON.parse para convertir una cadena JSON recibida en objetos de Ruby.

  • De forma predeterminada, las claves son cadenas
  • Pase symbolize_names: true para utilizar claves de tipo símbolo
require 'json'

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

Claves convertidas en símbolos

Las claves de tipo símbolo son prácticas y se buscan ligeramente más rápido.

  • Actívelas con symbolize_names: true
  • Tenga cuidado con las entradas que no sean de confianza, ya que podrían crear muchos símbolos
require 'json'

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

Devolver JSON desde Sinatra

En una ruta de Sinatra, establezca el tipo de contenido y devuelva una cadena JSON.

  • content_type :json establece la cabecera
  • Devuelva hash.to_json como cuerpo
require 'sinatra'
require 'json'

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

Leer el cuerpo de una solicitud JSON

Para las API POST, lea el cuerpo sin procesar y analícelo.

  • request.body.read proporciona la cadena sin procesar
  • Analícela con 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

Crear un hash de respuesta de una API

Mantenga la coherencia de las respuestas creando un hash estructurado antes de serializarlo.

  • Incluya los datos bajo una clave data
  • Incluya el estado y los metadatos
require 'json'

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

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

Gestionar errores de análisis

El JSON mal formado genera JSON::ParserError. Captúrelo siempre.

  • Devuelva un 400 Bad Request al cliente
  • No permita nunca que un error de análisis bloquee la aplicación
require 'json'

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

Serializar arrays de objetos

Las colecciones se serializan de forma natural como arrays JSON.

  • Un array de hashes se convierte en un array de objetos
  • Use map para dar forma a cada registro
require 'json'

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

to_json personalizado en objetos

Puede enseñar a una clase a serializarse definiendo to_json o as_json.

  • Convierta el estado interno en un hash simple
  • Oculte los campos privados de la API
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

Comprobación rápida

Compruebe sus conocimientos sobre las API JSON.

Resumen

Ha aprendido a crear API JSON:

  • require 'json' de la biblioteca estándar
  • to_json / JSON.generate serializan Ruby a JSON
  • JSON.parse deserializa el JSON entrante
  • Establezca content_type :json en las rutas de Sinatra
  • Capture siempre JSON::ParserError

A continuación explorará Rack y el middleware.

Preguntas frecuentes

¿La lección «APIs JSON» es gratis?

Sí — el texto completo de «APIs JSON» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «APIs JSON»?

Devuelva JSON Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «APIs JSON»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de Sinatra
  2. Rutas y parámetros
  3. APIs JSON
  4. Middleware y Rack
← Volver a Ruby Academy