Метод toJson
Метод toJson применяется к коллекциям, моделям Eloquent
и другим объектам в Laravel, преобразуя их в строку JSON.
Первым параметром передаются опции JSON-кодирования (битовые маски),
вторым - максимальная глубина рекурсии. Если параметры не указаны,
используются значения по умолчанию.
Синтаксис
<?php
$json = $collection->toJson($options, $depth);
?>
Пример
Давайте преобразуем коллекцию чисел в JSON-строку:
<?php
use Illuminate\Support\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$res = $collection->toJson();
echo $res;
?>
Результат выполнения кода:
"[1,2,3,4,5]"
Пример
Давайте преобразуем ассоциативный массив в JSON-строку:
<?php
use Illuminate\Support\Collection;
$data = [
'name' => 'user',
'age' => 25,
'city' => 'London'
];
$collection = new Collection($data);
$res = $collection->toJson();
echo $res;
?>
Результат выполнения кода:
"{\"name\":\"user\",\"age\":25,\"city\":\"London\"}"
Пример
Давайте преобразуем модель Eloquent в JSON-строку:
<?php
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
$user = User::first();
$res = $user->toJson();
echo $res;
}
}
?>
Результат выполнения кода:
"{\"id\":1,\"name\":\"user\",\"email\":\"user@example.com\",\"created_at\":\"2024-01-01T00:00:00.000000Z\",\"updated_at\":\"2024-01-01T00:00:00.000000Z\"}"
Пример
Давайте преобразуем коллекцию моделей в JSON-строку:
<?php
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function index()
{
$articles = Article::limit(3)->get();
$res = $articles->toJson();
echo $res;
}
}
?>
Результат выполнения кода:
"[{\"id\":1,\"title\":\"article 1\",\"body\":\"text\",\"status\":\"published\"},{\"id\":2,\"title\":\"article 2\",\"body\":\"text\",\"status\":\"draft\"},{\"id\":3,\"title\":\"article 3\",\"body\":\"text\",\"status\":\"published\"}]"
Пример
Давайте используем опцию JSON_PRETTY_PRINT для форматирования вывода:
<?php
use Illuminate\Support\Collection;
$data = [
'name' => 'user',
'age' => 25,
'city' => 'London'
];
$collection = new Collection($data);
$res = $collection->toJson(JSON_PRETTY_PRINT);
echo $res;
?>
Результат выполнения кода:
"{\n \"name\": \"user\",\n \"age\": 25,\n \"city\": \"London\"\n}"