logo
GeekFormat

Công cụ JSON to PHP trực tuyến miễn phí. Chuyển đổi JSON thành mã PHP class có thể thực thi chỉ với một cú nhấp chuột. Hỗ trợ hai kiểu ArrayObject và stdClass, tự động tạo namespace, typed properties (PHP 7.4+), readonly class tùy chọn (PHP 8.1+), triển khai JsonSerializable, các đối tượng lồng nhau tự động tách thành các lớp độc lập, mảng tự động chuyển đổi thành PHP array, chạy cục bộ trên trình duyệt không cần tải lên.

Đề xuất Liên quan

Về JSON to PHP class và mô hình hóa lớp thực thể PHP

Công cụ JSON to PHP (JSON to PHP Converter) là một công cụ thiết thực tự động chuyển đổi cấu trúc dữ liệu JSON thành mã lớp PHP tiêu chuẩn. Giải phóng các nhà phát triển khỏi công việc lặp lại của việc viết thủ công namespace / lớp / thuộc tính public / hàm tạo, đặc biệt phù hợp để nhanh chóng chuyển đổi JSON mẫu từ tài liệu giao diện API thành các lớp thực thể PHP có thể require trực tiếp vào dự án Composer.

Công cụ này hỗ trợ 4 kiểu mã chính: ① Kiểu ArrayObject (kế thừa \ArrayObject, hỗ trợ truy cập mảng và đối tượng, thường được sử dụng trong hệ sinh thái Laravel / Symfony Serializer); ② Kiểu stdClass (kế thừa \stdClass, chỉ hỗ trợ truy cập đối tượng, WordPress / hành vi mặc định json_decode); ③ Kiểu readonly class (final readonly class PHP 8.1+, bất biến sau khi khởi tạo, phù hợp cho DTO); ④ Kiểu tích hợp Laravel (triển khai Jsonable + Arrayable, sử dụng với Eloquent API Resource). Các nhà phát triển có thể tự do lựa chọn theo khung được sử dụng trong dự án.

Ánh xạ kiểu PHP là cốt lõi của JSON to PHP. Công cụ này ánh xạ các kiểu cơ bản của JSON thành các kiểu tiêu chuẩn của PHP: chuỗi thành string, số nguyên thành int, số thực thành float, boolean thành bool, mảng thành array, đối tượng lồng nhau thành lớp độc lập (đặt tên bằng cách viết hoa tên trường), null thành ?type (thuộc tính nullable). Tất cả các thuộc tính được khai báo bằng typed properties của PHP 7.4+, cho phép kiểm tra kiểu trực tiếp trong IDE.

Một điểm nổi bật khác biệt khác là 'Tự động triển khai giao diện JsonSerializable': Mỗi lớp PHP được tạo tự động triển khai \JsonSerializable và tạo phương thức public function jsonSerialize(): mixed { return [...] }. Điều này có nghĩa là bạn có thể xuất chuỗi JSON trực tiếp bằng echo json_encode($user), json_encode sẽ tự động gọi dữ liệu mảng được trả về bởi jsonSerialize(). Khi sử dụng với giao diện Jsonable trong Laravel, bạn có thể trực tiếp sử dụng return response()->json($user) mà không cần xử lý bổ sung.

Khác với một số công cụ trực tuyến yêu cầu tải JSON lên máy chủ để xử lý, tất cả các phép tính của công cụ này được hoàn thành trong trình duyệt. quicktype-core được tải và thực thi thông qua Web Worker, phân tích cú pháp JSON, suy luận kiểu, tạo mã PHP, đóng gói ZIP đều được thực hiện cục bộ, không gửi dữ liệu đến bất kỳ máy chủ nào. Điều này đặc biệt quan trọng đối với JSON chứa khóa API, trường thông tin cá nhân người dùng hoặc cấu trúc kinh doanh chưa phát hành, dữ liệu sẽ bị xóa khỏi bộ nhớ khi đóng trang.

Mã được tạo thường cần được đưa vào dự án Composer để sử dụng. Đảm bảo phiên bản PHP trong composer.json đáp ứng yêu cầu (PHP 7.4+ hỗ trợ typed properties, PHP 8.1+ hỗ trợ readonly class), sao chép các lớp được tạo vào thư mục src, sau đó autoload thông qua namespace (PSR-4). Sau đó, bạn có thể tiêu thụ dữ liệu thông qua json_decode($jsonString, false) hoặc json_decode($jsonString, true) + giải tuần tự hóa, tận hưởng sự tiện lợi của hệ thống kiểu PHP.

Trường hợp sử dụng

  • Phát triển backend Laravel: Chuyển đổi nhanh JSON mẫu từ tài liệu giao diện API thành lớp Eloquent Model / API Resource, tuần tự hóa phản hồi với giao diện Jsonable / Arrayable tích hợp sẵn của Laravel
  • Tích hợp Symfony Serializer: Chuyển đổi JSON trả về từ API bên thứ ba thành lớp PHP kiểu ArrayObject, sử dụng Symfony Serializer để ánh xạ đối tượng sâu và xác thực dữ liệu
  • WordPress REST API: Chuyển đổi cấu trúc JSON trả về từ endpoint tùy chỉnh thành lớp PHP kiểu stdClass, xuất trực tiếp với wp_send_json(), phù hợp với hành vi mặc định của wp_json_encode()
  • readonly DTO PHP 8.1+: Chuyển đổi JSON thành final readonly class, sử dụng làm đối tượng truyền dữ liệu (DTO), làm cho nó bất biến sau khi khởi tạo, ngăn chặn logic kinh doanh vô tình sửa đổi dữ liệu phản hồi
  • Phát triển gói Composer: Chuyển đổi JSON Schema thành lớp PHP, sau đó xuất bản lên Packagist để sử dụng làm lớp mô hình SDK, các dự án Composer khác có thể require để tái sử dụng
  • Đối tượng cố định cho kiểm thử đơn vị: Chuyển đổi đối tượng cố định JSON thành lớp PHP, sau đó thực hiện kiểm thử dựa trên dữ liệu kiểm thử thông qua json_decode + giải tuần tự hóa, khẳng định các trường có cấu trúc
  • Tập lệnh di chuyển dữ liệu: Chuyển đổi tệp cấu hình JSON thành lớp PHP, sử dụng truy cập kiểu mạnh trong logic kinh doanh, dễ dàng tự động hoàn thành IDE và kiểm tra kiểu hơn so với truy cập mảng
  • Liên kết Mock phía trước: Backend trước tiên chuyển đổi mô hình JSON thành lớp PHP, phía trước đồng thời nhận giao diện TypeScript / lớp PHP tương ứng, duy trì tính nhất quán kiểu ở cả hai phía
  • Đánh giá mã: Chuyển đổi JSON trả về từ API thành lớp PHP dễ đọc, thuận tiện cho việc thảo luận về đặt tên trường, khả năng hiển thị thuộc tính trong Code Review
  • Tái cấu trúc dự án kế thừa: Tái cấu trúc mã dựa trên truy cập động mảng liên kết array thành truy cập kiểu mạnh dựa trên lớp PHP, thực hiện phân tích tĩnh với PHPStan / Psalm
  • PHPUnit DataProvider: Chuyển đổi dữ liệu kiểm thử JSON thành lớp PHP, sau đó đưa vào trường hợp kiểm thử thông qua DataProvider, IDE tự động đề xuất trường thuộc tính
  • Liên kết API backend snake_case: Khi API backend trả về trường snake_case, bật 'Chuyển thành camelCase' + kiểu ArrayObject trong hệ thống PHP phía trước để liên kết mượt mà
  • Phân tích tĩnh PHPStan: Lớp được tạo mặc định bao gồm khai báo kiểu, có thể sử dụng phpstan analyse ./src --level=8 trong CI để chặn lỗi kiểu
  • Giáo dục và đào tạo: Trong kịch bản giảng dạy PHP, chuyển đổi JSON mẫu thành lớp PHP để trình diễn mô hình hóa hướng đối tượng, hệ thống kiểu, triển khai giao diện
  • Lớp cổng API Gateway: Chuyển đổi JSON trả về từ microservice thượng nguồn thành lớp PHP để tập hợp ở lớp cổng, các dịch vụ PHP hạ nguồn tiêu thụ kiểu mạnh thông qua thuộc tính lớp
  • Tiêu thụ hàng đợi tin nhắn: Chuyển đổi nội dung tin nhắn JSON tiêu thụ từ RabbitMQ / Kafka thành lớp PHP, sau đó lưu trữ hoặc chuyển tiếp, thực hiện phân tích cú pháp nghiêm ngặt với JSON_THROW_ON_ERROR
  • Mô hình hóa SKU / SPU thương mại điện tử: Chuyển đổi cấu trúc JSON sản phẩm (nhiều thông số kỹ thuật / nhiều hình ảnh / nhiều thuộc tính) thành lớp PHP, tối ưu hóa truy vấn N+1 trong Laravel cùng với kiểu ArrayObject
  • Xác thực callback WebHook: Chuyển đổi cấu trúc JSON xác thực của cổng thanh toán, callback hậu cần thành lớp PHP, xác thực chữ ký với hash_hmac()
  • Chuỗi công cụ OpenAPI: Chuyển đổi schema JSON của OpenAPI 3.x thành lớp PHP, kết nối với luồng tạo ứng dụng khách PHP của Swagger Codegen / Apifox
  • Đường ống ETL dữ liệu: Chuyển đổi JSON từ nguồn dữ liệu thượng nguồn (trường JSON MySQL / MongoDB / Elasticsearch) thành lớp PHP, sau đó làm sạch và tải dữ liệu

Cách Sử dụng

  1. Dán đối tượng JSON (khuyến nghị) hoặc mảng vào trình soạn thảo bên trái, hoặc nhấp vào 'Sample' để tải mẫu tiếng Trung chứa address / company / tags lồng nhau
  2. Nhấp vào nút 'Settings' trên thanh công cụ, chọn trong cửa sổ bật lên: ① Đặt tên lớp gốc (ví dụ: User) và namespace (ví dụ: App\Models); ② Chọn kiểu mã (ArrayObject / stdClass / readonly class); ③ Chọn kiểu mã (typed properties / Tích hợp Laravel / Symfony Serializer); ④ Chọn chiến lược đặt tên trường (Giữ nguyên / camelCase / tất cả chữ thường / UPPER_SNAKE)
  3. Công cụ sẽ tự động chuyển đổi trong vòng 400ms, bên phải sẽ hiển thị tất cả các lớp PHP được tạo (mỗi lớp là thẻ độc lập, thanh tiêu đề hiển thị huy hiệu kiểu hiện tại theo thời gian thực); nếu có lỗi định dạng JSON, nút 'Sửa lỗi JSON' sẽ hiển thị
  4. Xác nhận xem tên lớp, tên thuộc tính, giao diện được tạo có khớp với mong đợi không; nếu cần điều chỉnh, sửa đổi tên khóa trong JSON gốc hoặc mở lại Settings để sửa đổi các tùy chọn
  5. Nếu hài lòng, nhấp vào nút 'Sao chép' của lớp riêng lẻ để dán vào IDE, hoặc nhấp vào 'Download ZIP' trên thanh công cụ để tải xuống tất cả các lớp cùng một lúc (cấu trúc thư mục theo đường dẫn namespace)

Tính năng

  • Hai kiểu mã chuyển đổi tự do: ArrayObject (kế thừa \ArrayObject, hỗ trợ truy cập kiểu mảng $obj['key']) / stdClass (kế thừa \stdClass, hỗ trợ truy cập kiểu đối tượng $obj->key), tương thích với nhiều kịch bản như tuần tự hóa Laravel, WordPress REST, Symfony Serializer
  • Mẫu PHP hoàn chỉnh: Tự động tạo khai báo namespace + câu lệnh use + chú thích đầu lớp (Copyright + dấu thời gian tạo) + định nghĩa lớp + thuộc tính public có kiểu (PHP 7.4+), có thể require trực tiếp vào dự án Composer mà không cần viết mã soạn sẵn thủ công
  • Tự động triển khai giao diện JsonSerializable: Mỗi lớp tự động tạo public function jsonSerialize(): mixed { return [...] }, có thể tuần tự hóa JSON trực tiếp với json_encode() mà không cần mã soạn sẵn bổ sung
  • Tùy chọn readonly class PHP 8.1+: Sau khi bật, các lớp được tạo sẽ thêm final readonly class, tất cả thuộc tính trở thành readonly, không thể thay đổi sau khi khởi tạo, phù hợp cho kịch bản API response DTO bất biến
  • Suy luận kiểu thông minh: string → string, integer → int, float → float, bool → bool, array → array, đối tượng lồng nhau → lớp độc lập, null → ?type (thuộc tính nullable), không cần chỉ định kiểu trường thủ công
  • Tự động tách lớp lồng nhau: Các đối tượng lồng nhau sử dụng tên trường viết hoa làm đầu để tạo lớp PHP độc lập (ví dụ: address → Address), đối tượng trong mảng được đặt tên theo quy tắc 'bỏ s ở cuối' (ví dụ: users → User), tất cả lớp lồng nhau cũng triển khai JsonSerializable
  • 4 chiến lược đặt tên trường: Giữ nguyên / chuyển snake_case thành camelCase (user_name → userName) / tất cả chữ thường / kiểu hằng UPPER_SNAKE, phù hợp với chuẩn mã PSR-1 / Laravel / Symfony
  • Tích hợp Laravel một cú nhấp: Sau khi chọn, tự động triển khai giao diện Jsonable, Arrayable, thêm phương thức toArray() / toJson(), có thể sử dụng trực tiếp làm Eloquent API Resource với autoload Composer
  • Sao chép lớp đơn + Tải xuống ZIP nhiều tệp: Mỗi lớp PHP có nút 'Sao chép' độc lập, bạn cũng có thể nhấp vào 'Tải xuống ZIP' trên thanh công cụ để tải xuống gói ZIP (ví dụ: App/Models/User.php) được cấu trúc theo thư mục namespace, giải nén là sử dụng ngay
  • Chạy cục bộ trên trình duyệt + lịch sử: Phân tích cú pháp JSON, tạo lớp PHP, đóng gói ZIP đều hoàn thành bằng JavaScript (quicktype-core + JSZip) trong trình duyệt, dữ liệu không được tải lên bất kỳ máy chủ nào; tích hợp lịch sử localStorage cho 200 đầu vào gần đây

Ví dụ mã

PHP: Tuần tự hóa lớp được tạo bởi công cụ này với json_encode()

php

Lớp PHP được tạo bởi công cụ này mặc định triển khai giao diện JsonSerializable, trực tiếp xuất JSON với json_encode() mà không cần xử lý bổ sung.

<?php

require_once 'vendor/autoload.php';

use App\Models\User;

// 模拟从 API 接收到的 JSON 字符串
$jsonString = '{"id":1,"name":"Alice","email":"alice@example.com","isActive":true}';

// 1) 反序列化为本工具生成的类
$userData = json_decode($jsonString, true);
$user = new User(
    $userData['id'],
    $userData['name'],
    $userData['email'],
    $userData['isActive']
);

// 2) 强类型访问字段(IDE 自动补全 + PHPStan 静态检查)
echo $user->name;          // Alice
echo $user->email;         // a****@***********example.com
echo $user->isActive ? '活跃' : '禁用'; // 活跃

// 3) json_encode() 自动调用 jsonSerialize(),无需任何额外代码
echo json_encode($user, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
/*
{
    "id": 1,
    "name": "Alice",
    "email": "alice@example.com",
    "isActive": true
}
*/

PHP: Ví dụ tích hợp Laravel API Resource

php

Sau khi chọn tích hợp Laravel, các lớp được tạo bởi công cụ này có thể được sử dụng trực tiếp làm Eloquent API Resource, định dạng phản hồi với toArray() / toJson().

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * GET /api/users/{id}
     */
    public function show(int $id): JsonResponse
    {
        // 1) 从数据库或外部 API 获取数据
        $userData = $this->fetchUserFromApi($id);

        // 2) 用本工具生成的 User 类包装
        $user = new User(
            $userData['id'],
            $userData['name'],
            $userData['email'],
            $userData['isActive']
        );

        // 3) 直接 return response()->json($user)
        //    Laravel 会自动调用 jsonSerialize()
        return response()->json($user);
    }

    /**
     * POST /api/users
     */
    public function store(Request $request): JsonResponse
    {
        // 4) 反向用法:把请求 JSON 反序列化为 User 类
        $user = User::fromArray($request->all());

        // 5) 用 toArray() 获取数组形式
        $payload = $user->toArray();

        // 6) 执行业务逻辑(如入库 / 调用第三方 API)
        $this->userService->create($payload);

        return response()->json([
            'message' => 'User created',
            'data' => $user,
        ], 201);
    }
}

/*
 * 对应 composer.json 依赖:
 * "require": {
 *     "php": "^8.1",
 *     "laravel/framework": "^11.0"
 * }
 */

PHP: Ví dụ tích hợp Symfony Serializer

php

Các lớp được tạo theo kiểu ArrayObject của công cụ này có thể hoạt động với thành phần Symfony Serializer để tuần tự hóa và giải tuần tự hóa sâu, phù hợp cho lớp cổng API phức tạp.

<?php

namespace App\Service;

use App\Models\User;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\Serializer\Normalizer\PropertyNormalizer;

class UserSerializer
{
    private SerializerInterface $serializer;

    public function __construct(SerializerInterface $serializer)
    {
        // 使用 PropertyNormalizer 处理 public 属性
        $this->serializer = $serializer;
    }

    /**
     * 将 User 对象序列化为 JSON 字符串
     */
    public function toJson(User $user): string
    {
        return $this->serializer->serialize($user, 'json');
    }

    /**
     * 将 JSON 字符串反序列化为 User 对象
     */
    public function fromJson(string $json): User
    {
        return $this->serializer->deserialize($json, User::class, 'json');
    }

    /**
     * 批量反序列化(如从 MongoDB 导出的 JSON 数组)
     */
    public function fromJsonArray(string $jsonArray): array
    {
        $users = [];
        $data = json_decode($jsonArray, true);

        foreach ($data as $item) {
            $users[] = User::fromArray($item);
        }

        return $users;
    }
}

// 使用示例
$serializer = new UserSerializer($serializerService);

$json = '{"id":1,"name":"Alice","address":{"city":"Beijing","zip":"100000"},"tags":["php","symfony"]}';

// 反序列化为本工具生成的 User 对象
$user = $serializer->fromJson($json);
echo $user->name;                  // Alice
echo $user->address->city;         // Beijing (强类型访问)
print_r($user->tags);              // ['php', 'symfony']

// 序列化回 JSON
$jsonOutput = $serializer->toJson($user);

Best Practices

Trong hầu hết các dự án backend PHP, lớp được tạo theo kiểu ArrayObject hỗ trợ cả truy cập mảng ($obj['key']) và truy cập đối tượng ($obj->key), cùng với giao diện JsonSerializable được triển khai mặc định, json_encode() tự động gọi mảng được trả về bởi jsonSerialize(). Đây là cách viết phương tiện truyền dữ liệu đối tượng phổ biến nhất trong hệ sinh thái PHP, tương thích với hầu hết các khung chính như Laravel, Symfony, CodeIgniter.

readonly class được giới thiệu trong PHP 8.1+ là phương pháp hay nhất cho DTO: thuộc tính bất biến sau khi tạo, ngăn chặn logic kinh doanh vô tình sửa đổi dữ liệu phản hồi; thúc đẩy hàm tạo làm mã ngắn gọn hơn (public function __construct(public int $id, public string $name) {} hoàn thành khai báo thuộc tính chỉ trong một dòng). Khuyến nghị thay đổi API response DTO, cấu trúc callback WebHook, mô hình ứng dụng khách API bên thứ ba thành kiểu readonly class.

Trường cơ sở dữ liệu Laravel mặc định là snake_case, nhưng thuộc tính PHP được khuyến nghị là camelCase. Chiến lược 'Chuyển thành camelCase' của công cụ này tự động chuyển đổi, đồng thời khóa mảng trả về của jsonSerialize() giữ nguyên snake_case, làm cho đầu ra json_encode() vẫn là snake_case. Điều này tuân thủ thói quen truy cập mô hình Laravel trong khi duy trì khả năng tương thích API.

Gói ZIP được tạo được cấu trúc theo đường dẫn không gian tên (ví dụ: App/Models/User.php). Cấu hình phần autoload.psr-4 trong composer.json, ví dụ: "App\\": "src/", sau đó thực thi composer dump-autoload. Bằng cách này, Composer sẽ tự động ánh xạ App\Models\User đến src/Models/User.php mà không cần require thủ công.

Công cụ này mặc định tạo typed properties (PHP 7.4+), cho phép suy luận đầy đủ kiểu thuộc tính trong chế độ PHPStan --level=8. Khuyến nghị tích hợp phpstan analyse ./src --level=8 vào đường ống CI để chặn lỗi kiểu. Psalm cũng hỗ trợ PropertyTypeProvider để thực hiện xác thực kiểu mạnh.

Công cụ này chạy hoàn toàn cục bộ trên trình duyệt và không tải lên bất kỳ dữ liệu nào. Nhưng hãy hình thành thói quen: ① Vô hiệu hóa thông tin trước khi chuyển đổi JSON chứa khóa API / mã thông báo / thông tin cá nhân người dùng; ② Khi sử dụng công cụ này cho cấu trúc kinh doanh nội bộ quy mô lớn (giao diện chưa phát hành), đảm bảo đã ngắt kết nối mạng; ③ Không commit dữ liệu mẫu chứa thông tin nhạy cảm vào kho lưu trữ công khai sau khi tạo mã.

Đối tượng JSON lồng nhau đệ quy tạo các lớp PHP độc lập. Khi cấp độ lồng nhau JSON vượt quá 6 lớp (ví dụ: menu lồng nhiều lớp, cây tổ chức, tài liệu kinh doanh phức tạp), số lượng lớp được tạo sẽ bùng nổ (N lớp lồng nhau mỗi lớp), làm cho IDE tải chậm và khó bảo trì. Đề xuất: ① Chia JSON thành nhiều mô-đun và chuyển đổi riêng biệt; ② Hoặc tái cấu trúc thủ công sau khi tạo bằng cách sử dụng chỉ mục mảng ($user['profile']['address']['city']) thay vì lồng lớp.

Giá trị null JSON mặc định được suy luận là ?mixed (nullable mixed), đây là phương án dự phòng an toàn nhưng không phải kiểu chính xác. Nếu biết kiểu trường (ví dụ: "nickname": "" suy luận là string), trước tiên cung cấp giá trị mẫu trong JSON nguồn, sau đó xóa giá trị mẫu sau khi tạo và thay đổi thành kiểu chính xác như ?string, điều này sẽ cải thiện đáng kể độ chính xác của phân tích tĩnh PHPStan.

Câu hỏi Thường gặp

Làm thế nào để chuyển đổi JSON thành PHP class?

Dán nội dung JSON vào hộp nhập liệu bên trái, công cụ sẽ tự động chuyển đổi trong vòng 400ms; hoặc nhấp vào nút 'Convert' trên thanh công cụ. Sau khi chuyển đổi xong, bên phải sẽ hiển thị tất cả các lớp PHP được tạo, mỗi lớp có nút 'Sao chép' độc lập; bạn cũng có thể nhấp vào 'Download ZIP' trên thanh công cụ để tải xuống tất cả các lớp được đóng gói theo cấu trúc thư mục namespace.

Những cấu trúc dữ liệu JSON nào được hỗ trợ?

Hỗ trợ hai cấu trúc: ① Đối tượng JSON (sử dụng làm lớp gốc, tự động tạo lớp RootClass); ② Mảng JSON (sử dụng đối tượng đầu tiên của mảng làm mẫu lớp gốc). Tất cả các đối tượng lồng nhau được xử lý đệ quy thành các lớp độc lập; các đối tượng trong mảng được xử lý đệ quy thành các lớp tương ứng với kiểu phần tử mảng.

Những nội dung nào được bao gồm trong lớp PHP được tạo?

Mỗi tệp .php được tạo bao gồm: ① Chú thích đầu tệp (Copyright + dấu thời gian tự động tạo); ② Khai báo namespace; ③ Câu lệnh use (tự động import \JsonSerializable / \ArrayAccess khi cần); ④ Định nghĩa lớp (ArrayObject / stdClass / readonly class theo cài đặt); ⑤ Giao diện triển khai (JsonSerializable / Jsonable / Arrayable theo cài đặt); ⑥ Thuộc tính public có kiểu (PHP 7.4+); ⑦ Hàm tạo (gán tất cả thuộc tính theo cài đặt); ⑧ Phương thức jsonSerialize() / toArray() / toJson(). Hoàn toàn sẵn sàng cho kiểm tra cú pháp php -l và yêu cầu sử dụng.

Sự khác biệt giữa kiểu ArrayObject và stdClass là gì?

Kiểu ArrayObject: Lớp được tạo kế thừa \ArrayObject, hỗ trợ cả truy cập mảng $obj['key'] và truy cập đối tượng $obj->key, trả về đối tượng khi json_encode(). Kiểu stdClass: Lớp được tạo kế thừa \stdClass, chỉ hỗ trợ truy cập đối tượng $obj->key, nhẹ hơn nhưng không thể truy cập trực tiếp theo kiểu mảng. Hệ sinh thái Laravel / WordPress mặc định sử dụng kiểu stdClass (hành vi mặc định của json_decode), Symfony Serializer mặc định sử dụng kiểu ArrayObject.

Hỗ trợ tạo Laravel API Resource không?

Có. Sau khi chọn tùy chọn 'Tích hợp Laravel một cú nhấp' trong cài đặt, công cụ sẽ tự động tạo triển khai giao diện Jsonable, Arrayable, thêm phương thức toJson($options = 0) và toArray(); các lớp được tạo có thể sử dụng trực tiếp trong Eloquent API Resource (ví dụ: new UserResource($user) hoặc $user->toArray()). Đồng thời tự động use Illuminate\Contracts\Support\Jsonable và Illuminate\Contracts\Support\Arrayable.

Mã được tạo ở chế độ PHP 8.1 readonly class trông như thế nào?

Sau khi bật readonly class, lớp PHP được tạo sẽ được đơn giản hóa đáng kể. Ví dụ, lớp User sau khi bật readonly chỉ khoảng 12 dòng: final readonly class User implements \JsonSerializable { public function __construct(public int $id, public string $name) {} public function jsonSerialize(): array { return [...] } }. Tất cả các thuộc tính được khai báo là readonly thông qua thúc đẩy thuộc tính hàm tạo, không thể thay đổi sau khi khởi tạo. Lưu ý: Yêu cầu dự án PHP 8.1+, trường readonly chỉ có thể được gán thông qua hàm tạo.

Làm thế nào để chuyển đổi tên trường snake_case thành camelCase?

Chọn chế độ 'Chuyển thành camelCase' trong nhóm 'Chiến lược đặt tên trường' của cửa sổ bật lên Settings, công cụ sẽ tự động chuyển đổi tên trường JSON từ snake_case thành kiểu đặt tên được khuyến nghị của PHP. Ví dụ: user_name → userName, created_at → createdAt, is_active → isActive. Đồng thời, khi JSON đến từ ràng buộc tuyến đường Laravel, bạn có thể truy cập trực tiếp thuộc tính lớp bằng $request->userName mà không cần chuyển đổi trung gian thủ công.

Các đối tượng JSON lồng nhau được xử lý như thế nào?

Công cụ tự động tạo các lớp PHP độc lập cho các đối tượng lồng nhau. Quy tắc đặt tên: Sử dụng khóa đối tượng lồng nhau viết hoa làm đầu làm tên lớp (ví dụ: address → Address), khóa đối tượng trong mảng bỏ chữ s ở cuối rồi viết hoa (ví dụ: users → User). Tất cả các lớp lồng nhau cũng chứa các trường, hàm tạo, phương thức jsonSerialize() hoàn chỉnh, namespace nhất quán với lớp gốc, có thể import bằng use App\Models\Address.

Trường mảng tự động được chuyển đổi thành gì?

Có. Trường mảng trong JSON tự động được chuyển đổi thành thuộc tính PHP array, kiểu phần tử được tự động suy luận từ phần tử đầu tiên. Ví dụ: ["a","b","c"] → array (chú thích array<string> trong comment); [{...},{...}] → array (chú thích array<User> trong comment, User là lớp mới được đặt tên từ khóa); mảng rỗng [] mặc định là array (chú thích array<mixed> trong comment). Trong PHP 8.0+, bạn có thể nhận được gợi ý kiểu trong IDE cùng với chú thích PHPDoc.

Làm thế nào để sửa đổi tên lớp gốc và namespace?

Có nút Settings ở góc trên bên phải của thanh công cụ; sau khi nhấp, hộp thoại cài đặt sẽ mở, bạn có thể đặt: ① Tên lớp gốc (mặc định JsonRootClass); ② Namespace (mặc định App\Models). Sau khi sửa đổi, tên tất cả các lớp được tạo sẽ được cập nhật đồng bộ, cấu trúc thư mục trong ZIP cũng sẽ được cấu trúc theo namespace (ví dụ: App/Models/User.php).

Tải xuống là tệp .php đơn hay gói ZIP?

Tải xuống là gói ZIP (User.zip), chứa tất cả các lớp PHP được tạo được cấu trúc theo đường dẫn namespace. Ví dụ: khi namespace là App\Models, cấu trúc tệp trong ZIP là: App/Models/User.php, App/Models/Address.php, App/Models/Company.php, v.v. Bạn có thể import trực tiếp vào thư mục src của dự án Composer bằng lệnh unzip hoặc IDE.

Tôi có thể sao chép một lớp duy nhất trực tiếp vào IDE không?

Có. Mỗi lớp PHP được tạo được hiển thị dưới dạng thẻ độc lập, có nút 'Sao chép' ở góc trên bên phải của thẻ; sau khi nhấp, toàn bộ mã hoàn chỉnh của lớp (bao gồm <?php + namespace + use + lớp + thuộc tính + hàm tạo + phương thức) sẽ được sao chép vào bảng tạm, bạn có thể dán trực tiếp vào các IDE như PhpStorm / VS Code / Sublime.

Làm thế nào để lớp được tạo triển khai giao diện JsonSerializable?

Được bật theo mặc định. Tất cả các lớp PHP được tạo tự động triển khai \JsonSerializable và tạo phương thức public function jsonSerialize(): array { return [...] }; bạn có thể xuất chuỗi JSON trực tiếp bằng echo json_encode($user) hoặc sử dụng return response()->json($user) trong Laravel.

Tôi có thể sử dụng các lớp được tạo bởi công cụ này trong Symfony Serializer không?

Có. Symfony Serializer mặc định sử dụng kiểu array để đọc dữ liệu, tương thích tốt với các lớp được tạo theo kiểu ArrayObject. Bạn có thể tuần tự hóa trực tiếp với $serializer->serialize($user, 'json') của SerializerInterface, khi deserialize() cần các thuộc tính public hoặc getter trong lớp. Công cụ này tạo kiểu thuộc tính public + gán hàm tạo, có thể sử dụng trực tiếp với PropertyNormalizer của Symfony Serializer.

Nếu có lỗi định dạng JSON thì sao?

Công cụ tự động phát hiện tính hợp lệ của JSON, khi có lỗi sẽ hiển thị thông báo lỗi màu đỏ ở bên phải và cung cấp nút 'Sửa lỗi JSON'. Sau khi nhấp, nó có thể tự động sửa các lỗi phổ biến: ① Dấu phẩy thừa ở cuối; ② Thay thế dấu nháy đơn thành dấu nháy kép; ③ Hoàn thành dấu nháy cho khóa không có dấu nháy; ④ Loại bỏ chú thích. Sau khi sửa thành công, bạn có thể chuyển đổi trực tiếp để tạo lớp PHP.

Dữ liệu có được tải lên máy chủ không? Quyền riêng tư có an toàn không?

Chạy hoàn toàn cục bộ trên trình duyệt. Tất cả phân tích cú pháp JSON, tạo lớp PHP, đóng gói ZIP đều hoàn thành bằng JavaScript (quicktype-core + JSZip) trong trình duyệt, dữ liệu JSON đã nhập và mã PHP được tạo không được tải lên bất kỳ máy chủ nào, không được ghi lại, lưu trữ hoặc lưu vào bộ nhớ đệm trên đám mây. Bạn có thể yên tâm sử dụng ngay cả với JSON nhạy cảm chứa trường giao diện nội bộ, cấu trúc kinh doanh chưa phát hành, phản hồi API chưa công khai, dữ liệu sẽ bị xóa khi đóng trang.

Tạo JSON lớn 10.000 dòng có chậm không?

Công cụ không có giới hạn số dòng rõ ràng, nhưng trình duyệt phân tích cú pháp và hiển thị JSON rất lớn sẽ chậm. Đề xuất: ① Chia JSON để chuyển đổi theo lô; ② Tập trung vào một cấp độ lồng nhau tại một thời điểm; ③ Nếu cần tạo hàng loạt hơn 100 lớp, nên sử dụng trực tiếp plugin mẫu PHP của IDE hoặc viết tập lệnh quicktype CLI đơn giản.

Lớp PHP được tạo có hỗ trợ các phiên bản dưới PHP 7.4 không?

Không hoàn toàn hỗ trợ. Các lớp được tạo bởi công cụ này mặc định sử dụng typed properties (ví dụ: public int $id) của PHP 7.4+. Nếu dự án của bạn vẫn là PHP 7.0~7.3, khai báo kiểu sẽ gây ra sự cố tương thích. Đề xuất: ① Nâng cấp dự án lên PHP 8.1+ (được khuyến nghị, hiệu suất và hệ thống kiểu tốt hơn); ② Hoặc xóa hàng loạt khai báo kiểu trong IDE sau khi tạo (Tìm và Thay thế `public int ` → `public `); ③ Hoặc sử dụng chế độ tương thích PHP 7.4 (công cụ này mặc định đặt PHP 7.4 là phiên bản tối thiểu).

Xử lý sự cố

Hiển thị 'Vui lòng nhập dữ liệu JSON' hoặc bên phải trống

Hộp nhập liệu bên trái trống hoặc chỉ chứa ký tự trắng. Đảm bảo nội dung JSON hợp lệ đã được dán, hoặc nhấp vào 'Sample' để tải mẫu tiếng Trung, hoặc nhấp vào 'Upload' để chọn tệp .json / .txt.

Hiển thị 'Unexpected token ... in JSON at position N'

Định dạng JSON không hợp lệ. Nguyên nhân phổ biến: ① Dấu phẩy thừa ở cuối (ví dụ: {"a":1,}); ② Sử dụng dấu nháy đơn thay vì dấu nháy kép; ③ Cách viết đối tượng JS (ví dụ: {key: value}) thay vì JSON (ví dụ: {"key": "value"}). Nhấp vào nút 'Sửa lỗi JSON' có thể tự động sửa một số lỗi.

Lỗi 'Typed property must not be accessed before initialization' trong dự án PHP 7.x

Các lớp được tạo bởi công cụ này mặc định sử dụng typed properties của PHP 7.4+ (ví dụ: public int $id). Nếu dự án của bạn vẫn là PHP 7.0~7.3, khai báo kiểu sẽ gây ra sự cố tương thích. Giải pháp: ① Nâng cấp dự án lên PHP 8.1+ (được khuyến nghị, hiệu suất và hệ thống kiểu tốt hơn); ② Xóa hàng loạt khai báo kiểu trong IDE (Tìm và Thay thế `public int ` → `public `); ③ Bỏ chọn tùy chọn 'PHP 7.4 typed properties' (chỉ có hiệu lực đối với một số kiểu mã).

Lỗi 'Cannot modify readonly property' trong PHP 8.1 readonly class

Thuộc tính được tạo theo kiểu readonly class không thể sửa đổi sau khi khởi tạo. Nếu bạn cố gắng $user->name = 'Bob' sẽ báo lỗi. Giải pháp: ① Thay đổi thành kiểu ArrayObject hoặc stdClass (thuộc tính có thể sửa đổi); ② Hoặc tạo lại phiên bản mới bằng new User(...) thay vì sửa đổi.

Không tìm thấy Illuminate\Contracts\Support\Jsonable trong dự án Laravel

Kiểu tích hợp Laravel cần phụ thuộc laravel/framework. Đảm bảo có trong composer.json: "require": { "php": "^8.1", "laravel/framework": "^11.0" }. Sau đó thực thi composer update để cài đặt phụ thuộc. Nếu không sử dụng Laravel, vui lòng chọn kiểu ArrayObject hoặc stdClass.

Giải tuần tự hóa Symfony Serializer thất bại 'Cannot denormalize object'

Nguyên nhân phổ biến: ① Lớp được tạo không có thuộc tính public hoặc phương thức getter (Symfony Serializer mặc định sử dụng PropertyNormalizer); ② Lớp thiếu hàm tạo không đối số nhưng có tham số bắt buộc. Giải pháp: ① Xác nhận công cụ này đã tạo thuộc tính public; ② Xây dựng đối tượng thủ công bằng phương thức tĩnh fromArray() rồi chuyển cho Serializer.

Tên lớp đối tượng lồng nhau không như mong đợi (ví dụ: categories được đặt tên là Categori)

Công cụ sử dụng quy tắc đặt tên 'bỏ chữ s ở cuối + viết hoa' cho các đối tượng trong mảng; đối với các số nhiều bất quy tắc như categories thì không thân thiện. Đề xuất: ① Thay đổi khóa JSON nguồn thành số ít (ví dụ: categories → category); ② Hoặc đổi tên lớp bằng Rename của IDE sau khi tạo (đồng thời sửa đổi tất cả các tham chiếu).

Cấu trúc thư mục ZIP đã tải xuống không đúng sau khi giải nén

Thư mục trong ZIP được tổ chức theo cài đặt namespace (mặc định App/Models/). Nếu vị trí không đúng sau khi giải nén, bạn có thể: ① Sửa đổi tên namespace (ví dụ: thành App\Dto) rồi tải xuống lại; ② Chỉ định thư mục giải nén bằng unzip -d src/; ③ Hoặc trực tiếp File → Open toàn bộ thư mục đã giải nén trong IDE.

Lớp được tạo không tự động tải

Dự án Composer cần cấu hình ánh xạ autoload PSR-4 trong composer.json, ví dụ: "autoload": { "psr-4": { "App\\": "src/" } }. Sau đó thực thi composer dump-autoload, Composer sẽ tự động tải tệp lớp theo ánh xạ không gian tên đến thư mục.

Tên trường truy cập thay đổi sau khi chuyển snake_case thành camelCase

'Chuyển thành camelCase' sẽ thay đổi tên thuộc tính PHP (ví dụ: user_name → userName), nhưng khóa mảng trả về trong phương thức jsonSerialize() vẫn giữ nguyên snake_case, JSON xuất ra bởi json_encode() vẫn là tên trường ban đầu. Vì vậy, truy cập thuộc tính PHP bằng $user->userName, JSON xuất ra vẫn là {"user_name": "..."}. Nếu giải tuần tự hóa cũng muốn truy cập theo camelCase, cần thay đổi thành khóa camelCase trong mảng trả về của jsonSerialize().

Trang bị lag khi tạo hơn 100 lớp lồng nhau

Công cụ không có giới hạn số lượng lớp rõ ràng, nhưng hiệu suất hiển thị DOM siêu lớn của trình duyệt giảm đáng kể. Đề xuất: ① Chia JSON thành nhiều mô-đun độc lập và chuyển đổi riêng biệt; ② Hoặc trực tiếp sử dụng công cụ tạo mã tích hợp sẵn của IDE (ví dụ: plugin JSON to PHP của PhpStorm); ③ Cấp độ lồng nhau khuyến nghị không vượt quá 6 lớp, nếu không đề xuất tái cấu trúc cấu trúc JSON.

Mảng là kiểu số nhưng tạo array<int> thay vì array<float>

Công cụ suy luận kiểu theo phần tử đầu tiên của mảng (ví dụ: [1, 2, 3] suy luận là int, [1.5, 2.5] suy luận là float). Nếu bạn trộn số nguyên và số thực (ví dụ: [1, 2.5]), công cụ sẽ suy luận theo phần tử đầu tiên. Giải pháp: ① Thêm ít nhất một phần tử số thực mẫu trong JSON nguồn (ví dụ: [0.0, 1.5]); ② Hoặc điều chỉnh thủ công kiểu trong chú thích PHPDoc sau khi tạo.

Trường giá trị null được tạo thành kiểu ?mixed thay vì ?string

Giá trị null JSON được công cụ mặc định suy luận là kiểu ?mixed (vì không thể xác định kiểu thực tế). Đây là cách làm an toàn để tránh đánh giá sai. Nếu biết chắc kiểu, bạn có thể cung cấp giá trị mẫu cho trường đó trong JSON nguồn (ví dụ: "field": "" suy luận là string), sau khi tạo thay đổi kiểu thành ?string.

Lớp vẫn không tự động tải sau khi composer dump-autoload

Nguyên nhân có thể: ① namespace không khớp với thư mục (ví dụ: namespace App\Models nhưng tệp trong src/Dto/); ② Ánh xạ psr-4 trong composer.json sai (ví dụ: "App\\": "src/Dto/" nên là "App\\Dto\\": "src/Dto/"). Giải pháp: Kiểm tra namespace của mỗi tệp .php có tương ứng chặt chẽ với đường dẫn thư mục không (đoạn namespace phải bằng đoạn thư mục, phân biệt chữ hoa chữ thường).

PHPStan nhắc 'Property does not have default value'

Thuộc tính typed properties được tạo không có giá trị mặc định, PHPStan coi chúng có thể chưa được khởi tạo trong chế độ --level=8. Giải pháp: ① Tắt quy tắc nghiêm ngặt của PHPStan; ② Gán giá trị trống trong hàm tạo (ví dụ: $this->tags = []); ③ Sử dụng kiểu readonly class (được gán ngay sau khi thúc đẩy hàm tạo).

Giải tuần tự hóa mảng đối tượng Symfony Serializer thất bại

Đối với mảng đối tượng như [{...},{...}], PropertyNormalizer cần gợi ý kiểu phần tử. Giải pháp: ① Chỉ định rõ kiểu array<User> trong PHPDoc; ② Hoặc bọc bằng ArrayCollection ($users = new ArrayCollection()).

Khóa tiếng Trung tạo tên thuộc tính PHP có ký tự đặc biệt

Khi JSON nguồn chứa khóa tiếng Trung (ví dụ: "姓名": "Alice"), công cụ sẽ tạo thuộc tính public string $姓名; IDE có thể nhắc không chuẩn đặt tên nhưng sẽ không báo lỗi. Đề xuất: ① Thay đổi khóa JSON thành tiếng Anh (phù hợp hơn với chuẩn đặt tên PHP PSR-1); ② Khi giữ tiếng Trung, đảm bảo mã hóa tệp PHP là UTF-8 (PHP mặc định UTF-8).

Thứ tự xuất $obj['key'] và $obj->key trong kiểu ArrayObject không nhất quán

Truy cập mảng kiểu ArrayObject trả về theo thứ tự khai báo thuộc tính, truy cập đối tượng trả về theo thứ tự mảng trả về trong phương thức jsonSerialize(). Nếu hai thứ tự không nhất quán, sẽ dẫn đến đầu ra echo json_encode() không nhất quán với var_dump($obj). Đề xuất: Giữ thứ tự trả về của jsonSerialize() nhất quán với thứ tự tham số hàm tạo.

ID số trong JSON callback WebHook vượt quá PHP_INT_MAX

int của PHP là số nguyên có dấu 64 bit trên hệ thống 64 bit (giá trị lớn nhất 9223372036854775807); nếu ID số trong JSON vượt quá phạm vi này (ví dụ: ID tuyết của Twitter), nó sẽ bị cắt bớt. Giải pháp: ① Nhận ID dưới dạng kiểu chuỗi ("id": "1234567890123456789"); ② Phân tích cú pháp với cờ JSON_BIGINT_AS_STRING.

Thuật ngữ

namespace
Cơ chế không gian tên được giới thiệu trong PHP 5.3+ để ngăn chặn xung đột tên lớp. Công cụ này tự động tạo theo namespace do người dùng đặt và cấu trúc thư mục App/Models/ trong ZIP.
class
Mẫu định nghĩa đối tượng trong PHP. Những gì công cụ này tạo là lớp PHP tiêu chuẩn, có thể khởi tạo trực tiếp bằng new User(...).
ArrayObject
Lớp trong thư viện chuẩn PHP SPL, triển khai các giao diện như ArrayAccess. Lớp được tạo theo kiểu ArrayObject của công cụ này kế thừa \ArrayObject, hỗ trợ truy cập kép kiểu mảng và kiểu đối tượng.
stdClass
Lớp đối tượng chung tích hợp sẵn của PHP, json_decode($json, false) mặc định trả về kiểu này. Lớp được tạo theo kiểu stdClass của công cụ này kế thừa \stdClass, chỉ hỗ trợ truy cập kiểu đối tượng.
typed properties
Khai báo kiểu thuộc tính được giới thiệu trong PHP 7.4+ (ví dụ: public int $id). Các thuộc tính do công cụ này tạo mặc định bao gồm khai báo kiểu, cho phép IDE và công cụ phân tích tĩnh kiểm tra kiểu trực tiếp.
readonly class
Lớp chỉ đọc được giới thiệu trong PHP 8.1+, tất cả các thuộc tính trong lớp tự động trở thành readonly và không thể sửa đổi sau khi khởi tạo. Kiểu readonly của công cụ này tạo final readonly class, phù hợp cho kịch bản DTO bất biến.
JsonSerializable
Giao diện được giới thiệu trong PHP 5.4+, các đối tượng triển khai giao diện này sẽ tự động gọi phương thức jsonSerialize() khi được xử lý bởi json_encode(). Tất cả các lớp của công cụ này tự động triển khai giao diện này.
Jsonable (Laravel)
Giao diện hợp đồng của khung Laravel, sau khi triển khai đối tượng có thể gọi toJson() để xuất JSON. Kiểu tích hợp Laravel của công cụ này tự động triển khai giao diện này.
Arrayable (Laravel)
Giao diện hợp đồng của khung Laravel, sau khi triển khai đối tượng có thể gọi toArray() để xuất mảng. Kiểu tích hợp Laravel của công cụ này tự động triển khai giao diện này.
Composer
Công cụ quản lý phụ thuộc chính thức của PHP. Khi sử dụng mã được tạo bởi công cụ này, bạn cần cấu hình autoload PSR-4 trong composer.json (ví dụ: App\\: src/).
PSR-4
Chuẩn autoload do PHP-FIG ban hành, tải tệp lớp thông qua ánh xạ không gian tên-thư mục. Gói ZIP do công cụ này tạo được cấu trúc theo đường dẫn không gian tên, tuân thủ chuẩn PSR-4.
Symfony Serializer
Khung tuần tự hóa của thành phần Symfony. Các lớp được tạo theo kiểu ArrayObject của công cụ này có thể được sử dụng với PropertyNormalizer của Symfony Serializer để tuần tự hóa và giải tuần tự hóa sâu.
Eloquent API Resource
Lớp tài nguyên API của Laravel Eloquent, được sử dụng để định dạng phản hồi API. Lớp được tạo theo kiểu tích hợp Laravel của công cụ này có thể được sử dụng trực tiếp làm lớp cơ sở API Resource.
composer.json
Tệp cấu hình của dự án Composer. Sau khi đưa mã được tạo bởi công cụ này vào thư mục src, bạn cần cấu hình phần autoload trong composer.json và thực thi composer dump-autoload.
json_encode / json_decode
Hàm tuần tự hóa và giải tuần tự hóa JSON tích hợp sẵn của PHP. Sau khi lớp được tạo bởi công cụ này triển khai JsonSerializable, json_encode() sẽ tự động gọi phương thức jsonSerialize().
PHPUnit DataProvider
Cơ chế nhà cung cấp dữ liệu của khung kiểm thử PHPUnit. Lớp PHP được tạo bởi công cụ này có thể được đưa vào trường hợp kiểm thử thông qua DataProvider, nâng cao hiệu quả viết kiểm thử với tự động hoàn thành IDE.
PHPStan
Công cụ phân tích tĩnh PHP, có thể kiểm tra kiểu mã, phát hiện lỗi. Các lớp được tạo bởi công cụ này có typed properties, do đó có thể suy luận đầy đủ kiểu thuộc tính trong chế độ PHPStan --level=8.
Psalm
Một công cụ phân tích tĩnh PHP khác do Vimeo mở nguồn. Các lớp được tạo bởi công cụ này có thể thực hiện xác thực kiểu mạnh với PropertyTypeProvider của Psalm.
Doctrine
Bộ công cụ ORM và DBAL trong hệ sinh thái PHP. Lớp PHP được tạo bởi công cụ này có thể được sử dụng làm khung cho Doctrine Entity, sau đó thêm chú thích như #[ORM\Column] thủ công.
php -l
Lệnh kiểm tra cú pháp dòng lệnh PHP. Các lớp được tạo bởi công cụ này có thể trước tiên thực thi xác thực cú pháp với php -l User.php, sau đó yêu cầu vào dự án.
Composer dump-autoload
Lệnh Composer tạo lại chỉ mục autoload. Sau khi đưa lớp được tạo bởi công cụ này vào thư mục src, bạn cần thực thi composer dump-autoload để PSR-4 autoload nhận dạng.
JSON_THROW_ON_ERROR
Cờ xử lý lỗi json_decode() của PHP 7.3+, sau khi bật nó sẽ ném ngoại lệ JsonException khi phân tích cú pháp JSON thất bại. Ví dụ Laravel của công cụ này sử dụng phân tích cú pháp nghiêm ngặt.
Hash (PHP)
Hàm băm tích hợp sẵn của PHP, chủ yếu được sử dụng để xác thực WebHook. Lớp callback WebHook được tạo bởi công cụ này được sử dụng để xác thực chữ ký cùng với hash_hmac().

Bảng tham chiếu nhanh ánh xạ kiểu JSON sang kiểu PHP

Công cụ này tự động suy luận kiểu PHP tương ứng theo kiểu giá trị JSON; mối quan hệ ánh xạ phổ biến như sau:

Ví dụ giá trị JSONPhương pháp xác địnhTạo kiểu PHPGiá trị mặc định thuộc tính
nullvalue === null?mixed / ?typenull
true / falsetypeof value === 'boolean'boolfalse
42typeof value === 'number' && Number.isInteger(value)int0
3.14typeof value === 'number' && !Number.isInteger(value)float0.0
"hello"typeof value === 'string'string''
[...] (mảng rỗng)Array.isArray(value) && value.length === 0array (PHPDoc array<mixed>)[]
["a","b"]Array.isArray(value) && typeof value[0] === 'string'array (PHPDoc array<string>)[]
[1,2,3]Array.isArray(value) && typeof value[0] === 'number'array (PHPDoc array<int>)[]
[{...},{...}]Array.isArray(value) && typeof value[0] === 'object'array (PHPDoc array<Xxx>)[]
{...} (đối tượng lồng nhau)typeof value === 'object' && !Array.isArray(value)Xxx (lớp độc lập)new Xxx()

Bảng so sánh 4 kiểu mã PHP

4 kiểu mã lớp PHP được công cụ hỗ trợ, lựa chọn theo yêu cầu dự án:

Kiểu mãKế thừa / bổ nghĩaGiao diện triển khaiKịch bản áp dụng
Kiểu ArrayObjectextends \ArrayObjectimplements \JsonSerializableHệ sinh thái Symfony Serializer, cần truy cập kiểu mảng $obj['key'], tương thích thư viện chuẩn PHP
Kiểu stdClassextends \stdClassimplements \JsonSerializableWordPress REST API, tương thích hành vi mặc định json_decode, phương tiện truyền dữ liệu đối tượng nhẹ
Kiểu readonly classfinal readonly class (không kế thừa)implements \JsonSerializablePHP 8.1+, API response DTO, đối tượng truyền dữ liệu bất biến, đảm bảo không thể sửa đổi dữ liệu sau khi tạo
Kiểu tích hợp LaravelKhông kế thừa (mặc định)implements \Jsonable, \Arrayable, \JsonSerializableLaravel Eloquent API Resource, lớp mô hình Eloquent, định dạng phản hồi bộ điều khiển

Privacy & Security

Tất cả các hoạt động phân tích cú pháp JSON, tạo lớp PHP, đóng gói ZIP của công cụ JSON to PHP này được hoàn thành cục bộ hoàn toàn trong trình duyệt của bạn bằng JavaScript (quicktype-core + JSZip); dữ liệu JSON đã nhập và mã PHP được tạo không được tải lên bất kỳ máy chủ nào, không được ghi lại, lưu vào bộ nhớ đệm hoặc lưu trữ trên đám mây. Bạn có thể yên tâm sử dụng ngay cả với JSON nhạy cảm chứa trường giao diện nội bộ, cấu trúc kinh doanh chưa phát hành, phản hồi API chưa công khai, tất cả dữ liệu sẽ bị xóa khi đóng trang. Công cụ này không sử dụng bất kỳ cookie nào để theo dõi người dùng, không thu thập email hoặc thông tin tài khoản, không chèn tập lệnh phân tích của bên thứ ba, tất cả các phép tính được hoàn thành trong quy trình trình duyệt của thiết bị hiện tại. Ngay cả trong môi trường ngoại tuyến (ví dụ: mạng bị ngắt kết nối hoặc môi trường cách ly mạng nội bộ), bạn vẫn có thể sử dụng bình thường sau khi tài nguyên trang được tải một lần.

Authoritative References