How to Return JSON Response in Laravel: Simple Guide
In Laravel, you can return a JSON response using the
response()->json() helper method by passing an array or object. This method sets the correct headers and formats the data as JSON automatically.Syntax
The basic syntax to return a JSON response in Laravel uses the response()->json() method. You pass the data you want to return as an array or object inside the method. Laravel then converts it to JSON and sends it with the right headers.
response(): Laravel helper to create a response.json(): Method to format the response as JSON.- Data: An array or object containing the data to send.
php
return response()->json(['key' => 'value']);
Output
{"key":"value"}
Example
This example shows a simple Laravel controller method returning a JSON response with user data. It demonstrates how to send structured data as JSON to the client.
php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function getUser() { $user = [ 'id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com' ]; return response()->json($user); } }
Output
{"id":1,"name":"Alice","email":"alice@example.com"}
Common Pitfalls
Some common mistakes when returning JSON in Laravel include:
- Returning arrays or objects directly without using
response()->json(), which may not set the correct headers. - Forgetting to convert Eloquent models or collections properly, which can cause unexpected output.
- Not setting the correct HTTP status code when needed.
Always use response()->json() to ensure proper JSON formatting and headers.
php
<?php // Wrong way: returns array but no JSON headers set return ['message' => 'Hello']; // Right way: returns JSON with headers return response()->json(['message' => 'Hello']);
Quick Reference
| Method | Description |
|---|---|
| response()->json($data) | Returns JSON response with correct headers |
| response()->json($data, 201) | Returns JSON with HTTP status 201 Created |
| response()->json($data)->header('X-Custom', 'value') | Add custom headers to JSON response |
| return new JsonResource($model) | Use Laravel API Resource for JSON formatting |
Key Takeaways
Use response()->json() to return JSON with proper headers in Laravel.
Pass arrays or objects to response()->json() for automatic JSON conversion.
Avoid returning raw arrays or objects without response()->json() to prevent header issues.
Set HTTP status codes in response()->json() as needed for API clarity.
Consider Laravel API Resources for complex JSON formatting and transformations.