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_jsonConvertir 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: truepara 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 :jsonestablece la cabecera- Devuelva
hash.to_jsoncomo cuerpo
require 'sinatra'
require 'json'
get '/api/status' do
content_type :json
{ status: 'ok', time: Time.now.to_i }.to_json
endLeer el cuerpo de una solicitud JSON
Para las API POST, lea el cuerpo sin procesar y analícelo.
request.body.readproporciona 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
endCrear 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}"
endSerializar 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
mappara 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_jsonto_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_jsonComprobación rápida
Compruebe sus conocimientos sobre las API JSON.
Resumen
Ha aprendido a crear API JSON:
require 'json'de la biblioteca estándarto_json/JSON.generateserializan Ruby a JSONJSON.parsedeserializa el JSON entrante- Establezca
content_type :jsonen 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.