logo
GeekFormat

JSON na PHP

Darmowe narzędzie online JSON do PHP. Przekształć JSON w gotowe do uruchomienia klasy PHP w jednym kliknięciu. Obsługuje dwa style ArrayObject i stdClass, automatycznie generuje namespace, typed properties (PHP 7.4+), opcjonalnie readonly class (PHP 8.1+), implements JsonSerializable. Zagnieżdżone obiekty automatycznie rozdzielane na niezależne klasy, tablice automatycznie konwertowane na PHP array, działa lokalnie w przeglądarce, bez wysyłania.

Powiązane Rekomendacje

O konwerterze JSON na PHP i modelowaniu klas encji PHP

Narzędzie JSON na PHP (JSON to PHP Converter) to praktyczne narzędzie, które automatycznie konwertuje struktury danych JSON na standardowy kod klas PHP. Uwalnia programistów od powtarzalnej pracy ręcznego pisania namespace / class / właściwości public / konstruktora, szczególnie nadaje się do szybkiej konwersji przykładowego JSON z dokumentacji interfejsu API na klasy encji PHP, które można bezpośrednio wymagać w projekcie Composer.

To narzędzie obsługuje 4 główne style kodu: ① Styl ArrayObject (dziedziczy \ArrayObject, obsługuje dostęp tablicowy i obiektowy, powszechny w ekosystemie Laravel / Symfony Serializer); ② Styl stdClass (dziedziczy \stdClass, obsługuje tylko dostęp obiektowy, domyślne zachowanie WordPress / json_decode); ③ Styl readonly class (final readonly class PHP 8.1+, niezmienny po konstrukcji, odpowiedni dla DTO); ④ Styl integracji Laravel (implementuje Jsonable + Arrayable, zintegrowany z Eloquent API Resource). Programiści mogą swobodnie wybierać w zależności od frameworka używanego w projekcie.

Mapowanie typów PHP to rdzeń JSON na PHP. Narzędzie mapuje podstawowe typy JSON na standardowe typy PHP: ciąg znaków na string, liczba całkowita na int, liczba zmiennoprzecinkowa na float, wartość logiczna na bool, tablica na array, zagnieżdżony obiekt na niezależną class (wielka litera nazwy pola), null na ?type (właściwość nullable). Wszystkie właściwości są deklarowane za pomocą typed properties PHP 7.4+, IDE może bezpośrednio przeprowadzać sprawdzanie typów.

Innym wyróżniającym się atutem jest 'Automatyczna implementacja interfejsu JsonSerializable': każda klasa PHP generowana przez to narzędzie automatycznie implementuje \JsonSerializable, generuje metodę public function jsonSerialize(): mixed { return [...] }. Oznacza to, że możesz bezpośrednio wypisać ciąg JSON przez echo json_encode($user), json_encode automatycznie wywoła dane tablicowe zwracane przez jsonSerialize(). W połączeniu z interfejsem Jsonable w Laravel, możesz bezpośrednio użyć return response()->json($user) bez dodatkowego przetwarzania.

W przeciwieństwie do niektórych narzędzi online, które wymagają wysyłania JSON na serwer do przetworzenia, wszystkie obliczenia tego narzędzia są kończone w przeglądarce. quicktype-core jest ładowany i uruchamiany przez Web Worker, parsowanie JSON, wnioskowanie typów, generowanie kodu PHP, pakowanie ZIP wszystkie wykonywane lokalnie, nie wysyłają danych na żaden serwer. Jest to szczególnie ważne dla JSON zawierającego klucze API, pola prywatności użytkowników, nieopublikowane struktury biznesowe, dane są usuwane z pamięci po zamknięciu strony.

Wygenerowany kod zazwyczaj trzeba umieścić w projekcie Composer do użycia. Upewnij się, że wersja PHP w composer.json spełnia wymagania (PHP 7.4+ obsługuje typed properties, PHP 8.1+ obsługuje readonly class), skopiuj wygenerowane klasy do katalogu src i autoladuj za pomocą namespace (PSR-4). Następnie konsumuj dane przez json_decode($jsonString, false) lub json_decode($jsonString, true) + deserializacja, ciesz się wygodą systemu typów PHP.

Przypadki użycia

  • Rozwój backendu Laravel: szybka konwersja przykładowego JSON z dokumentacji interfejsu API na klasy Eloquent Model / API Resource, bezpośrednia serializacja odpowiedzi z wbudowanymi interfejsami Jsonable / Arrayable Laravel
  • Integracja Symfony Serializer: konwersja JSON zwracanego przez API trzecich na klasy PHP w stylu ArrayObject, szczegółowe mapowanie obiektów i walidacja danych z Symfony Serializer
  • WordPress REST API: konwersja struktury JSON zwracanej przez niestandardowe endpointy na klasy PHP w stylu stdClass, bezpośrednie wyjście przez wp_send_json(), dostosowanie do domyślnego zachowania wp_json_encode()
  • readonly DTO PHP 8.1+: konwersja JSON na final readonly class jako obiekt transferu danych (DTO), niezmienny po konstrukcji, zapobiega błędnej modyfikacji danych odpowiedzi przez logikę biznesową
  • Rozwój pakietów Composer: konwersja JSON Schema na klasy PHP a następnie opublikowanie w Packagist jako warstwa modelu SDK, może być wymagana przez require i ponownie wykorzystywana przez inne projekty Composer
  • Fixture testów jednostkowych: konwersja fixture JSON na klasy PHP, napędzanie danych testowych przez json_decode + deserializacja, asercja na strukturalnych polach
  • Skrypty migracji danych: konwersja plików konfiguracyjnych JSON na klasy PHP do dostępu silnie typowanego w logice biznesowej, łatwiejsze autouzupełnianie IDE i sprawdzanie typów niż dostęp tablicowy
  • Współpraca z mockami frontendowymi: backend najpierw konwertuje model JSON na klasy PHP, frontend jednocześnie otrzymuje odpowiedni TypeScript interface / klasy PHP dla spójności typów po obu stronach
  • Przegląd kodu: bezpośrednia konwersja JSON odpowiedzi API na czytelne klasy PHP, ułatwia dyskusję o nazewnictwie pól, widoczności właściwości podczas Code Review
  • Refaktoryzacja projektów legacy: refaktoryzacja kodu z dynamicznym dostępem opartym na tablicach asocjacyjnych na silnie typowany dostęp oparty na klasach PHP, przeprowadzanie analizy statycznej z PHPStan / Psalm
  • PHPUnit DataProvider: konwersja danych testowych JSON na klasy PHP i wstrzykiwanie do przypadków testowych przez DataProvider, IDE automatycznie sugeruje pola właściwości
  • Połączenie z API backendu snake_case: gdy API backendu zwraca pola snake_case, włącz 'Konwertuj na camelCase' + styl ArrayObject w systemie PHP frontendowym dla bezproblemowego połączenia
  • Analiza statyczna PHPStan: wygenerowane klasy naturalnie mają deklaracje typów, wychwytywanie błędów typów przez phpstan analyse --level=8 w CI
  • Edukacja i szkolenia: konwersja przykładowego JSON na klasy PHP w scenariuszach edukacyjnych PHP, demonstracja modelowania obiektowego, systemu typów, implementacji interfejsów
  • Warstwa API Gateway: konwersja JSON zwracanego przez mikrousługi górne na klasy PHP do agregacji w warstwie gateway, usługi PHP dolne konsumują silnie typowane dane przez właściwości klasy
  • Konsumpcja wiadomości z kolejki: konwersja treści wiadomości JSON konsumowanych z RabbitMQ / Kafka na klasy PHP do magazynowania lub przekazywania, ścisłe parsowanie z JSON_THROW_ON_ERROR
  • Modelowanie SKU/SPU e-commerce: konwersja struktury JSON produktu (multi-spec/multi-obraz/multi-atrybut) na klasy PHP, optymalizacja zapytań N+1 w Laravel ze stylem ArrayObject
  • Weryfikacja podpisu callbacku WebHook: konwersja struktury weryfikacji podpisu JSON z bramki płatności, callbacków logistycznych na klasy PHP, sprawdzanie podpisu z hash_hmac()
  • Toolchain OpenAPI: konwersja JSON schematu OpenAPI 3.x na klasy PHP, podłączenie do przepływu generowania klienta PHP Swagger Codegen / Apifox
  • Potok ETL danych: konwersja JSON ze źródeł danych górnych (pole JSON MySQL / MongoDB / Elasticsearch) na klasy PHP do czyszczenia danych i magazynowania

Jak Używać

  1. Wklej obiekt JSON (zalecane) lub tablicę do edytora po lewej stronie, lub kliknij 'Sample' aby załadować przykład polski (w tym zagnieżdżone address / company / tags)
  2. Kliknij przycisk 'Settings' na pasku narzędzi, wybierz w okienku: ① Ustaw nazwę klasy głównej (np. User) i namespace (np. App\Models); ② Wybierz styl kodu (ArrayObject / stdClass / readonly class); ③ Wybierz funkcje kodu (typed properties / integracja Laravel / Symfony Serializer); ④ Wybierz strategię nazewnictwa pól (zachowaj oryginalne / camelCase / wszystkie małe / UPPER_SNAKE)
  3. Narzędzie automatycznie przekonwertuje w ciągu 400ms, wyświetli wszystkie wygenerowane klasy PHP po prawej stronie (każda klasa to niezależna karta, pasek tytułu pokazuje aktualny badge stylu w czasie rzeczywistym); jeśli wystąpi błąd formatu JSON, wyświetli przycisk 'Napraw JSON'
  4. Sprawdź, czy wygenerowana nazwa klasy, nazwa właściwości, interfejs są zgodne z oczekiwaniami; jeśli potrzeba dostosowania, zmień nazwę klucza JSON źródłowego lub ponownie otwórz Settings aby zmienić opcje
  5. Po zadowoleniu kliknij przycisk 'Kopiuj' na pojedynczej klasie aby wkleić do IDE, lub kliknij 'Download ZIP' na pasku narzędzi aby pobrać wszystkie klasy naraz (zorganizowane według struktury katalogów zgodnej ze ścieżką namespace)

Funkcje

  • Dwa style kodu, swobodne przełączanie: ArrayObject (dziedziczy \ArrayObject, obsługuje dostęp tablicowy $obj['key']) / stdClass (dziedziczy \stdClass, obsługuje dostęp obiektowy $obj->key), kompatybilne z serializacją Laravel, WordPress REST, Symfony Serializer i innymi scenariuszami
  • Kompletny szablon PHP: automatycznie generuje deklarację namespace + instrukcje use + komentarz nagłówka klasy (Copyright + znacznik czasu generacji) + definicję klasy + typowane właściwości public (PHP 7.4+), można bezpośrednio require do projektu Composer bez ręcznego uzupełniania kodu szablonowego
  • Automatyczna implementacja interfejsu JsonSerializable: każda klasa automatycznie generuje public function jsonSerialize(): mixed { return [...] }, współpracuje z json_encode() do bezpośredniej serializacji JSON, zero dodatkowego kodu szablonowego
  • Opcja readonly class PHP 8.1+: po włączeniu generowana klasa otrzymuje final readonly class, wszystkie właściwości są readonly i niezmienne po konstrukcji, idealne dla scenariuszy niezmiennych DTO odpowiedzi API
  • Inteligentne wnioskowanie typów: string → string, integer → int, float → float, bool → bool, array → array, zagnieżdżone obiekty → niezależna klasa, null → ?type (właściwość nullable), nie trzeba ręcznie określać typów pól
  • Automatyczne rozdzielanie zagnieżdżonych klas: zagnieżdżone obiekty używają wielkiej litery nazwy pola jako nazwy niezależnej klasy PHP (np. address → Address), obiekty w tablicach stosują regułę 'usuń s na końcu' (np. users → User), wszystkie zagnieżdżone klasy również implementują JsonSerializable
  • 4 strategie nazewnictwa pól: zachowaj oryginalne / snake_case na camelCase (user_name → userName) / wszystkie małe litery / styl stałych UPPER_SNAKE, spełnia konwencje kodowania PSR-1 / Laravel / Symfony
  • Integracja Laravel jednym kliknięciem: po zaznaczeniu automatycznie implementuje interfejsy Jsonable, Arrayable, dodaje metody toArray() / toJson(), można bezpośrednio używać jako Eloquent API Resource z autoload Composer
  • Kopiowanie pojedynczej klasy + pobieranie ZIP wielu plików: każda klasa PHP ma niezależny przycisk 'Kopiuj', pakiet ZIP zorganizowany według struktury katalogów namespace można pobrać jednym kliknięciem (np. App/Models/User.php), gotowe do użycia po rozpakowaniu
  • Lokalne działanie w przeglądarce + historia: parsowanie JSON, generowanie klas PHP, pakowanie ZIP wszystkie zakończone w przeglądarce przez JavaScript (quicktype-core + JSZip), dane nie są wysyłane na serwer; ostatnie 200 wejść zapisane jako historia w localStorage

Przykłady kodu

PHP: Serializacja klasy wygenerowanej przez narzędzie za pomocą json_encode()

php

Klasy PHP generowane przez to narzędzie domyślnie implementują interfejs JsonSerializable, zwracają JSON bezpośrednio przez json_encode() bez dodatkowego przetwarzania.

<?php

require_once 'vendor/autoload.php';

use App\Models\User;

// 模拟从 API 接收到的 JSON 字符串
$jsonString = '{"id":1,"name":"Alice","email":"a****@***********","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****@***********
echo $user->isActive ? '活跃' : '禁用'; // 活跃

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

PHP: Przykład integracji Laravel API Resource

php

Po zaznaczeniu integracji Laravel, klasy generowane przez to narzędzie mogą być bezpośrednio używane jako Eloquent API Resource, formatują odpowiedzi przez 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: Przykład integracji Symfony Serializer

php

Klasy generowane przez to narzędzie w stylu ArrayObject mogą być używane z komponentem Symfony Serializer do szczegółowej serializacji i deserializacji, odpowiednie dla złożonych warstw API Gateway.

<?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

W większości projektów backendowych PHP klasy generowane w stylu ArrayObject obsługują zarówno dostęp tablicowy ($obj['key']) jak i obiektowy ($obj->key), wraz z domyślnie zaimplementowanym interfejsem JsonSerializable, json_encode() automatycznie wywoła tablicę zwróconą przez jsonSerialize(). Jest to najbardziej uniwersalny sposób pisania nośnika danych obiektowych w ekosystemie PHP, kompatybilny z prawie wszystkimi głównymi frameworkami jak Laravel, Symfony, CodeIgniter.

readonly class wprowadzona w PHP 8.1+ to najlepsza praktyka dla DTO: właściwości nie mogą być zmieniane po konstrukcji, zapobiega błędnej modyfikacji danych odpowiedzi przez logikę biznesową; promocja konstruktora sprawia, że kod jest bardziej zwięzły (jeden wiersz public function __construct(public int $id, public string $name) {} kończy deklarację właściwości). Zaleca się konwersję DTO odpowiedzi API, struktur callbacku WebHook, modeli klienta API trzecich na styl readonly class.

Pola bazy danych Laravel domyślnie używają snake_case, ale właściwości PHP są zalecane w camelCase. Strategia 'Konwertuj na camelCase' tego narzędzia konwertuje automatycznie, klucz tablicy return z jsonSerialize() zachowuje oryginalny snake_case, więc wyjście json_encode() nadal jest snake_case. Jest to zgodne z nawykami dostępu do modeli Laravel przy jednoczesnym zachowaniu kompatybilności API.

Wygenerowany pakiet ZIP jest zorganizowany według ścieżki namespace (np. App/Models/User.php). Skonfiguruj sekcję autoload.psr-4 w composer.json, np.: "App\\": "src/", następnie uruchom composer dump-autoload. To sprawi, że Composer automatycznie zmapuje App\Models\User na src/Models/User.php, nie trzeba ręcznego require.

To narzędzie domyślnie generuje typed properties (PHP 7.4+), PHPStan może w pełni wnioskować typy właściwości w trybie --level=8. Zaleca się integrację phpstan analyse ./src --level=8 do potoku CI w celu wychwytywania błędów typów. Psalm również obsługuje PropertyTypeProvider do silnej weryfikacji typów.

To narzędzie działa całkowicie lokalnie w przeglądarce, nie wysyła żadnych danych. Ale przyzwyczaj się: ① Desensytyzuj JSON zawierający klucze API/tokeny/prywatność użytkowników przed konwersją; ② Upewnij się, że połączenie sieciowe jest rozłączone podczas używania tego narzędzia dla dużych wewnętrznych struktur biznesowych (nieopublikowanych interfejsów); ③ Nie commituj danych przykładowych zawierających informacje wrażliwe do publicznych repozytoriów po wygenerowaniu kodu.

Zagnieżdżone obiekty JSON rekurencyjnie generują niezależne klasy PHP. Jeśli poziom zagnieżdżenia JSON przekracza 6 warstw (np. wielopoziomowe menu zagnieżdżone, schemat organizacyjny, złożone dokumenty biznesowe), liczba wygenerowanych klas eksploduje (N klas zagnieżdżonych na warstwę), spowalniając ładowanie IDE i utrudniając utrzymanie. Zalecenie: ① Podziel JSON na kilka modułów do oddzielnej konwersji; ② Lub ręcznie zrefaktoryzuj na dostęp indeksem tablicy ($user['profile']['address']['city']) po wygenerowaniu zamiast zagnieżdżania klas.

Wartości JSON null domyślnie są wnioskowane jako ?mixed (nullable mixed), jest to bezpieczny fallback ale nie dokładny typ. Jeśli typ pola jest znany (np. "nickname": "" wnioskuje string), najpierw podaj przykładową wartość w JSON źródłowym, po wygenerowaniu usuń przykładową wartość a następnie zmień na dokładny typ taki jak ?string, to znacznie poprawi dokładność analizy statycznej PHPStan.

Często Zadawane Pytania

Jak przekonwertować JSON na klasę PHP?

Wklej zawartość JSON do pola wejściowego po lewej stronie, narzędzie automatycznie przekonwertuje w ciągu 400 ms; lub kliknij przycisk 'Convert' na pasku narzędzi. Po zakończeniu konwersji wszystkie wygenerowane klasy PHP zostaną wyświetlone po prawej stronie, każda klasa ma niezależny przycisk 'Kopiuj'; kliknij 'Download ZIP' na pasku narzędzi, aby spakować i pobrać wszystkie klasy naraz (w tym strukturę katalogów namespace).

Jakie struktury danych JSON są obsługiwane?

Obsługuje dwie struktury: ① Obiekt JSON (jako klasa główna, class RootClass tworzona automatycznie); ② Tablica JSON (używa pierwszego obiektu w tablicy jako szablonu klasy głównej). Wszystkie zagnieżdżone obiekty są przetwarzane rekurencyjnie na niezależne klasy; obiekty w tablicach są przetwarzane rekurencyjnie na klasy odpowiadające typowi elementu tablicy.

Co zawiera wygenerowana klasa PHP?

Każdy wygenerowany plik .php zawiera: ① Komentarz nagłówka pliku (Copyright + automatyczny znacznik czasu generacji); ② Deklarację namespace; ③ Instrukcje use (automatycznie importuje \JsonSerializable / \ArrayAccess itp. w razie potrzeby); ④ Definicję klasy (ArrayObject / stdClass / readonly class zgodnie z ustawieniami); ⑤ Implementowane interfejsy (JsonSerializable / Jsonable / Arrayable zgodnie z ustawieniami); ⑥ Typowane właściwości public (PHP 7.4+); ⑦ Konstruktor (generuje przypisanie wszystkich właściwości zgodnie z ustawieniami); ⑧ Metody jsonSerialize() / toArray() / toJson() itp. W pełni kompatybilne ze sprawdzaniem składni php -l i użyciem require.

Jaka jest różnica między stylem ArrayObject a stdClass?

Styl ArrayObject: wygenerowana klasa dziedziczy \ArrayObject, obsługuje zarówno dostęp tablicowy $obj['key'] jak i obiektowy $obj->key, zwraca dane obiektu przy json_encode(). Styl stdClass: wygenerowana klasa dziedziczy \stdClass, obsługuje tylko dostęp obiektowy $obj->key, jest lżejsza ale nie może bezpośrednio uzyskiwać dostępu tablicowego. Ekosystem Laravel / WordPress domyślnie używa stylu stdClass (domyślne zachowanie json_decode), Symfony Serializer domyślnie używa stylu ArrayObject.

Czy obsługuje generowanie Laravel API Resource?

Tak. Po zaznaczeniu opcji 'Integracja Laravel jednym kliknięciem' w ustawieniach, narzędzie automatycznie implementuje interfejsy Jsonable, Arrayable, dodaje metody toJson($options = 0) i toArray(). Wygenerowane klasy mogą być bezpośrednio używane w Eloquent API Resource (takie jak new UserResource($user) lub $user->toArray() itp.). Automatycznie używa również Illuminate\Contracts\Support\Jsonable i Illuminate\Contracts\Support\Arrayable.

Jak wygląda kod generowany w trybie readonly class PHP 8.1?

Po włączeniu readonly class wygenerowana klasa PHP zostanie znacznie uproszczona. Na przykład class User z włączonym readonly ma około 12 linii: final readonly class User implements \JsonSerializable { public function __construct(public int $id, public string $name) {} public function jsonSerialize(): array { return [...] } }. Wszystkie właściwości są deklarowane jako readonly przez promocję właściwości konstruktora i nie mogą być zmieniane po konstrukcji. Uwaga: projekt wymaga PHP 8.1+, pola readonly mogą być przypisywane tylko przez konstruktor.

Jak przekonwertować nazwy pól snake_case na camelCase?

Wybierz tryb 'Konwertuj na camelCase' w grupie 'Strategia nazewnictwa pól' w oknie ustawień, narzędzie automatycznie przekonwertuje nazwy pól JSON z snake_case na styl nazewnictwa zalecany przez PHP. Np. user_name → userName, created_at → createdAt, is_active → isActive. Ponadto, jeśli JSON pochodzi z wiązania tras Laravel, właściwości klasy mogą być bezpośrednio dostępne przez $request->userName, nie trzeba ręcznej konwersji pośredniej.

Jak przetwarzane są zagnieżdżone obiekty JSON?

Narzędzie automatycznie tworzy niezależne klasy PHP dla zagnieżdżonych obiektów. Reguła nazewnictwa: klucz zagnieżdżonego obiektu używa wielkiej litery jako nazwy klasy (np. address → Address), klucz obiektu w tablicy usuwa literę s na końcu a następnie używa wielkiej litery (np. users → User). Wszystkie zagnieżdżone klasy również zawierają pełne pola, konstruktor, metodę jsonSerialize(), namespace jest zgodny z klasą główną, można importować przez use App\Models\Address.

Czy pola tablicowe są automatycznie konwertowane na PHP array?

Tak. Pola tablicowe JSON są automatycznie konwertowane na właściwości PHP array, typ elementu jest automatycznie wnioskowany z pierwszego elementu tablicy. Np. ["a","b","c"] → array (oznaczone jako array<string> w komentarzu); [{...},{...}] → array (oznaczone jako array<User> w komentarzu, User to nowa klasa nazwana z klucza); pusta tablica[] domyślnie staje się array (oznaczona jako array<mixed> w komentarzu). Używanie adnotacji PHPDoc w PHP 8.0+ może dać podpowiedzi typów w IDE.

Jak zmienić nazwę klasy głównej i namespace?

W prawym górnym rogu paska narzędzi jest przycisk Settings, kliknij aby otworzyć okno ustawień, możesz ustawić: ① Nazwę klasy głównej (domyślnie JsonRootClass); ② Namespace (domyślnie App\Models). Po zmianie wszystkie wygenerowane nazwy klas zostaną zaktualizowane synchronicznie, struktura katalogów w ZIP również zostanie zorganizowana według namespace (np. App/Models/User.php).

Czy pobieranie to pojedynczy plik .php czy pakiet ZIP?

Pobieranie to pakiet ZIP (User.zip) zawierający wszystkie wygenerowane klasy PHP, zorganizowane według struktury katalogów zgodnej ze ścieżką namespace. Na przykład namespace to App\Models, struktura plików w ZIP to: App/Models/User.php, App/Models/Address.php, App/Models/Company.php itp. Można bezpośrednio zaimportować do katalogu src projektu Composer poleceniem unzip lub IDE.

Czy można skopiować pojedynczą klasę bezpośrednio do IDE?

Tak. Każda wygenerowana klasa PHP jest wyświetlana jako niezależna karta, w prawym górnym rogu karty jest przycisk 'Kopiuj'. Kliknij aby skopiować pełny kod całej klasy (w tym <?php + namespace + use + class + właściwości + konstruktor + metody) do schowka, można bezpośrednio wkleić do IDE takiego jak PhpStorm / VS Code / Sublime.

Jak sprawić, by wygenerowana klasa implementowała interfejs JsonSerializable?

Domyślnie włączone. Wszystkie wygenerowane klasy PHP automatycznie implementują \JsonSerializable, generując metodę public function jsonSerialize(): array { return [...] }. Zwracana tablica jest budowana według kolejności właściwości klasy. Możesz bezpośrednio wypisać ciąg JSON przez echo json_encode($user), a w Laravel można użyć return response()->json($user).

Czy Symfony Serializer może używać klas wygenerowanych przez to narzędzie?

Tak. Symfony Serializer domyślnie odczytuje dane w stylu tablicowym, jest dobrze kompatybilny z klasami wygenerowanymi w stylu ArrayObject. Można bezpośrednio serializować przez $serializer->serialize($user, 'json) z SerializerInterface; deserializacja przez deserialize() wymaga właściwości public lub metod getter w klasie. To, co generuje to narzędzie, to styl przypisania konstruktora + właściwości public, można bezpośrednio używać z PropertyNormalizer Symfony Serializer.

Co zrobić, jeśli wystąpi błąd formatu JSON?

Narzędzie automatycznie wykrywa poprawność JSON, w przypadku błędu wyświetli czerwoną wiadomość błędu po prawej stronie i udostępni przycisk 'Napraw JSON'. Kliknij aby automatycznie naprawić typowe błędy: ① Nadmiarowy przecinek na końcu; ② Zamiana pojedynczych cudzysłowów na podwójne; ③ Uzupełnienie cudzysłowów dla kluczy bez cudzysłowów; ④ Usunięcie komentarzy. Po pomyślnej naprawie można bezpośrednio przekonwertować i wygenerować klasy PHP.

Czy dane są wysyłane na serwer? Czy prywatność jest bezpieczna?

Działa całkowicie lokalnie w przeglądarce. Całe parsowanie JSON, generowanie klas PHP, pakowanie ZIP jest wykonywane przez JavaScript (quicktype-core + JSZip) w przeglądarce, wprowadzone dane JSON i wygenerowany kod PHP nie są wysyłane na żaden serwer, nie są rejestrowane ani buforowane w chmurze. Wrażliwe JSON zawierające pola interfejsu wewnętrznego, nieopublikowane struktury biznesowe, niepubliczne odpowiedzi API można bezpiecznie używać, wszystkie dane są usuwane po zamknięciu strony.

Czy strona staje się wolna podczas generowania dużego JSON z 10 000 wierszy?

Narzędzie nie ma jawnego limitu wierszy, ale parsowanie i renderowanie bardzo dużego JSON przez przeglądarkę będzie wolniejsze. Zalecenie: ① Podziel JSON na części do konwersji wsadowej; ② Skup się na jednym poziomie zagnieżdżenia naraz; ③ Jeśli trzeba wygenerować 100+ klas naraz, zaleca się bezpośrednie użycie wtyczki szablonu PHP w IDE lub napisanie prostego skryptu quicktype CLI.

Czy wygenerowane klasy PHP obsługują wersje poniżej PHP 7.4?

Nie w pełni. Klasy generowane przez to narzędzie domyślnie używają typed properties PHP 7.4+ (takich jak public int $id). Jeśli Twój projekt nadal jest w PHP 7.0~7.3, deklaracje typów spowodują problemy ze zgodnością. Zalecenie: ① Uaktualnij projekt do PHP 8.1+ (zalecane, lepsza wydajność i system typów); ② Lub wsadowo usuń deklaracje typów w IDE po wygenerowaniu (Znajdź i zamień `public int ` → `public `); ③ Lub użyj trybu zgodności PHP 7.4 (to narzędzie domyślnie używa PHP 7.4 jako dolnej granicy).

Rozwiązywanie problemów

Wyświetla 'Wprowadź dane JSON' lub prawa strona jest pusta

Obszar wejściowy po lewej stronie jest pusty lub zawiera tylko białe znaki. Upewnij się, że wkleiłeś prawidłową zawartość JSON, lub kliknij 'Sample' aby załadować przykład w języku polskim, lub kliknij 'Upload' aby wybrać plik .json / .txt.

Wyświetla 'Unexpected token ... in JSON at position N'

Format JSON jest nieprawidłowy. Typowe przyczyny: ① Nadmiarowy przecinek na końcu (np. {"a":1,}); ② Użycie pojedynczych cudzysłowów zamiast podwójnych; ③ Notacja obiektu JS ({key: value}) zamiast JSON ({"key": "value"}). Kliknij przycisk 'Napraw JSON' aby automatycznie naprawić niektóre błędy.

Błąd 'Typed property must not be accessed before initialization' w projekcie PHP 7.x

Klasy generowane przez to narzędzie domyślnie używają typed properties PHP 7.4+ (takich jak public int $id). Jeśli Twój projekt nadal jest w PHP 7.0~7.3, deklaracje typów spowodują problemy ze zgodnością. Rozwiązanie: ① Uaktualnij projekt do PHP 8.1+ (zalecane, lepsza wydajność i system typów); ② Wsadowo usuń deklaracje typów w IDE po wygenerowaniu (Znajdź i zamień `public int ` → `public `); ③ Odznacz opcję 'PHP 7.4 typed properties' (dotyczy tylko niektórych stylów kodu).

Błąd 'Cannot modify readonly property' w readonly class PHP 8.1

Właściwości generowane w stylu readonly class nie mogą być zmieniane po konstrukcji. Próba $user->name = 'Bob' spowoduje błąd. Rozwiązanie: ① Zmień na styl ArrayObject lub stdClass (właściwości modyfikowalne); ② Lub utwórz nową instancję przez new User(...) zamiast modyfikować.

Illuminate\Contracts\Support\Jsonable nie znalezione w projekcie Laravel

Styl integracji Laravel wymaga zależności laravel/framework. Upewnij się, że composer.json ma: "require": { "php": "^8.1", "laravel/framework": "^11.0" }. Następnie uruchom composer update aby zainstalować zależności. Jeśli nie używasz Laravel, wybierz styl ArrayObject lub stdClass.

Deserializacja Symfony Serializer nie powiodła się 'Cannot denormalize object'

Typowe przyczyny: ① Wygenerowana klasa nie ma właściwości public lub metod getter (Symfony Serializer domyślnie używa PropertyNormalizer); ② Klasa nie ma konstruktora bezparametrowego ale ma wymagane parametry. Rozwiązanie: ① Upewnij się, że to narzędzie wygenerowało właściwości public; ② Ręcznie skonstruuj obiekt statyczną metodą fromArray() a następnie przekaż do Serializer.

Nazwa klasy zagnieżdżonego obiektu nie jest taka jak oczekiwana (np. categories nazwane Categori)

Narzędzie używa reguły 'usuń s na końcu + wielka litera' dla obiektów w tablicach; nie jest przyjazne dla nieregularnych liczb mnogich takich jak categories. Zalecenie: ① Zmień klucz JSON źródłowego na liczbę pojedynczą (np. categories → category); ② Lub po wygenerowaniu użyj funkcji Zmień nazwę w IDE aby zmienić nazwę klasy (jednocześnie poprawiając wszystkie odwołania).

Struktura katalogów po rozpakowaniu pobranego ZIP jest nieprawidłowa

Katalogi w ZIP są organizowane według ustawienia namespace (domyślnie App/Models/). Jeśli pozycja po rozpakowaniu jest nieprawidłowa: ① Zmień nazwę namespace (np. na App\Dto) i pobierz ponownie; ② Określ katalog rozpakowania przez unzip -d src/; ③ Lub bezpośrednio otwórz cały rozpakowany folder w IDE.

Wygenerowana klasa nie jest automatycznie ładowana

Projekt Composer wymaga skonfigurowania mapowania autoload PSR-4 w composer.json, np.: "autoload": { "psr-4": { "App\\": "src/" } }. Następnie uruchom composer dump-autoload, Composer automatycznie załaduje pliki klas według mapowania namespace-katalog.

Dostęp do nazwy pola zmienił się po konwersji snake_case na camelCase

'Konwertuj na camelCase' zmienia nazwę właściwości PHP (np. user_name → userName), ale klucz tablicy return metody jsonSerialize() zachowuje oryginalny snake_case, JSON wyjściowy json_encode() nadal używa oryginalnej nazwy pola. Więc podczas dostępu do właściwości PHP używaj $user->userName, wyjście JSON nadal to {"user_name": "..."}. Jeśli chcesz uzyskiwać dostęp przez camelCase również podczas deserializacji, musisz zmienić klucze w tablicy return jsonSerialize() na camelCase.

Strona staje się wolna podczas generowania 100+ zagnieżdżonych klas

Narzędzie nie ma jawnego limitu liczby klas, ale wydajność renderowania bardzo dużego DOM przez przeglądarkę znacznie się pogarsza. Zalecenie: ① Podziel JSON na kilka niezależnych modułów do oddzielnej konwersji; ② Lub bezpośrednio użyj narzędzia generowania kodu wbudowanego w IDE (np. wtyczka JSON to PHP PhpStorm); ③ Zaleca się, aby poziom zagnieżdżenia nie przekraczał 6 warstw, w przeciwnym razie zaleca się refaktoryzację struktury JSON.

Tablica jest typu liczbowego ale generuje array<int> zamiast array<float>

Narzędzie wnioskuje typ z pierwszego elementu tablicy (np. [1, 2, 3] wnioskowane jako int, [1.5, 2.5] wnioskowane jako float). Jeśli mieszasz liczby całkowite i zmiennoprzecinkowe (np. [1, 2.5]), narzędzie wnioskuje z pierwszego elementu. Rozwiązanie: ① Dodaj co najmniej jeden przykładowy element float do JSON źródłowego (np. [0.0, 1.5]); ② Lub ręcznie dostosuj typ w adnotacji PHPDoc po wygenerowaniu.

Pole o wartości null generuje typ ?mixed zamiast ?string

Wartość JSON null nie może określić rzeczywistego typu, więc narzędzie domyślnie wnioskuje ją jako typ ?mixed. Jest to bezpieczne podejście do unikania błędnych wniosków. Jeśli typ jest znany, podaj przykładową wartość dla tego pola w JSON źródłowym (np. "field": "" wnioskuje string), po wygenerowaniu zmień typ na ?string.

Klasa nadal nie jest ładowana automatycznie po composer dump-autoload

Możliwe przyczyny: ① Namespace nie pasuje do katalogu (np. namespace App\Models ale plik jest w src/Dto/); ② Mapowanie psr-4 w composer.json jest błędne (np. "App\\": "src/Dto/" powinno być "App\\Dto\\": "src/Dto/"). Rozwiązanie: Sprawdź, czy namespace każdego pliku .php ściśle odpowiada ścieżce katalogu (segmenty namespace muszą być równe segmentom katalogu, z uwzględnieniem wielkości liter).

PHPStan zgłasza 'Property does not have default value'

Wygenerowane typed properties nie mają wartości domyślnych, więc PHPStan w trybie --level=8 uważa je za potencjalnie niezainicjowane. Rozwiązanie: ① Wyłącz strict rules PHPStan; ② Przypisz pustą wartość w konstruktorze (np. $this->tags = []); ③ Użyj stylu readonly class (przypisane natychmiast po promocji konstruktora).

Deserializacja tablicy obiektów Symfony Serializer nie powiodła się

Dla tablic obiektów takich jak [{...},{...}], PropertyNormalizer wymaga wskazówki typu elementu. Rozwiązanie: ① Jawnie określ typ array<User> w PHPDoc; ② Lub opakuj przez ArrayCollection ($users = new ArrayCollection()).

Klucz po chińsku generuje nazwę właściwości PHP ze znakami specjalnymi

Gdy JSON źródłowy zawiera klucz po chińsku (np. "姓名": "Alice"), narzędzie wygeneruje właściwość public string $姓名, IDE może zgłaszać ostrzeżenie o nieprawidłowym nazewnictwie ale nie spowoduje błędu. Zalecenie: ① Zmień klucz JSON na angielski (bardziej zgodne z konwencją nazewnictwa PHP PSR-1); ② Jeśli zachowujesz chiński, upewnij się, że kodowanie pliku PHP to UTF-8 (PHP domyślnie UTF-8).

Kolejność wyjścia $obj['key'] i $obj->key nie jest spójna w stylu ArrayObject

Dostęp tablicowy stylu ArrayObject zwraca według kolejności deklaracji właściwości, dostęp obiektowy zwraca według kolejności tablicy return w metodzie jsonSerialize(). Jeśli kolejność obu nie jest spójna, wyjście echo json_encode() będzie różne od var_dump($obj). Zalecenie: Utrzymuj kolejność return jsonSerialize() zgodną z kolejnością parametrów konstruktora.

Numeryczne ID w JSON callbacku WebHook przekracza PHP_INT_MAX

int PHP to 64-bitowa liczba całkowita ze znakiem (maksymalna wartość 9223372036854775807) w systemie 64-bitowym; jeśli numeryczne ID w JSON przekracza ten zakres (np. ID śnieżynki Twitter), zostanie obcięte. Rozwiązanie: ① Odbieraj ID jako typ string ("id": "1234567890123456789"); ② Parsuj z flagą JSON_BIGINT_AS_STRING.

Słownik

namespace
Mechanizm przestrzeni nazw wprowadzony w PHP 5.3+ do unikania kolizji nazw klas. To narzędzie automatycznie generuje na podstawie namespace ustawionego przez użytkownika, organizuje w katalogu App/Models/ w ZIP.
class
Szablon do definiowania obiektów w PHP. To, co generuje to narzędzie, to standardowa klasa PHP, można bezpośrednio tworzyć instancje przez new User(...).
ArrayObject
Klasa biblioteki standardowej SPL PHP, implementuje interfejsy takie jak ArrayAccess. Klasy generowane w stylu ArrayObject tego narzędzia dziedziczą \ArrayObject, obsługują zarówno dostęp w stylu tablicowym jak i obiektowym.
stdClass
Wbudowana generyczna klasa obiektów PHP, json_decode($json, false) domyślnie zwraca ten typ. Klasy generowane w stylu stdClass tego narzędzia dziedziczą \stdClass, obsługują tylko dostęp w stylu obiektowym.
typed properties
Deklaracje typów właściwości wprowadzone w PHP 7.4+ (takie jak public int $id). Właściwości generowane przez to narzędzie domyślnie mają deklaracje typów, IDE i narzędzia analizy statycznej mogą bezpośrednio przeprowadzać sprawdzanie typów.
readonly class
Klasa readonly wprowadzona w PHP 8.1+, wszystkie właściwości w klasie automatycznie stają się readonly i nie mogą być zmieniane po konstrukcji. Styl readonly tego narzędzia generuje final readonly class, odpowiedni dla scenariuszy DTO niezmiennych.
JsonSerializable
Interfejs wprowadzony w PHP 5.4+. Obiekty implementujące ten interfejs automatycznie wywołają metodę jsonSerialize() podczas json_encode(). Wszystkie klasy tego narzędzia automatycznie implementują ten interfejs.
Jsonable (Laravel)
Interfejs kontraktu frameworka Laravel. Po zaimplementowaniu obiekt może wywołać toJson() aby wypisać JSON. Styl integracji Laravel tego narzędzia automatycznie implementuje ten interfejs.
Arrayable (Laravel)
Interfejs kontraktu frameworka Laravel. Po zaimplementowaniu obiekt może wywołać toArray() aby wypisać tablicę. Styl integracji Laravel tego narzędzia automatycznie implementuje ten interfejs.
Composer
Oficjalne narzędzie zarządzania zależnościami PHP. Aby użyć kodu wygenerowanego przez to narzędzie, musisz skonfigurować autoload PSR-4 w composer.json (np. App\\: src/).
PSR-4
Standard autoload ustanowiony przez PHP-FIG, mapuje namespace na katalogi do ładowania plików klas. Pakiet ZIP generowany przez to narzędzie jest zorganizowany według ścieżki namespace, zgodny ze standardem PSR-4.
Symfony Serializer
Framework serializacji komponentu Symfony. Klasy generowane w stylu ArrayObject tego narzędzia mogą być używane z PropertyNormalizer Symfony Serializer do szczegółowej serializacji i deserializacji.
Eloquent API Resource
Klasa API Resource Laravel Eloquent, używana do formatowania odpowiedzi API. Klasy generowane w stylu integracji Laravel tego narzędzia mogą być bezpośrednio używane jako klasa bazowa API Resource.
composer.json
Plik konfiguracyjny projektu Composer. Po umieszczeniu kodu wygenerowanego przez to narzędzie w katalogu src, trzeba skonfigurować sekcję autoload w composer.json i uruchomić composer dump-autoload.
json_encode / json_decode
Wbudowane funkcje serializacji i deserializacji JSON w PHP. Gdy klasa generowana przez to narzędzie implementuje JsonSerializable, json_encode() automatycznie wywoła metodę jsonSerialize().
PHPUnit DataProvider
Mechanizm dostawcy danych frameworka testowego PHPUnit. Klasy PHP generowane przez to narzędzie mogą być wstrzykiwane do przypadków testowych jako DataProvider, zwiększają efektywność pisania testów z autouzupełnianiem IDE.
PHPStan
Narzędzie analizy statycznej PHP, przeprowadza sprawdzanie typów i wykrywanie błędów w kodzie. Klasy generowane przez to narzędzie mają typed properties, mogą w pełni wnioskować typy właściwości w trybie --level=8 PHPStan.
Psalm
Inne narzędzie analizy statycznej PHP open-source przez Vimeo. Klasy generowane przez to narzędzie mogą przeprowadzać silną weryfikację typów z PropertyTypeProvider Psalm.
Doctrine
Zestaw narzędzi ORM i DBAL ekosystemu PHP. Klasy PHP generowane przez to narzędzie mogą być używane jako szkielet Doctrine Entity, następnie ręcznie dodawać adnotacje takie jak #[ORM\Column].
php -l
Polecenie sprawdzania składni z linii poleceń PHP. Klasy generowane przez to narzędzie mogą przejść weryfikację składni php -l User.php przed require do projektu.
Composer dump-autoload
Polecenie Composer do ponownego generowania indeksu autoload. Po umieszczeniu klas wygenerowanych przez to narzędzie w katalogu src, trzeba uruchomić composer dump-autoload aby zostały rozpoznane przez autoload PSR-4.
JSON_THROW_ON_ERROR
Flaga obsługi błędów json_decode() PHP 7.3+. Po włączeniu rzuca wyjątek JsonException przy niepowodzeniu parsowania JSON. Przykład Laravel tego narzędzia używa ścisłego parsowania.
Hash (PHP)
Wbudowana funkcja skrótu PHP, często używana do weryfikacji podpisu WebHook. Klasy callbacku WebHook generowane przez to narzędzie sprawdzają podpis razem z hash_hmac().

Tabela referencyjna mapowania typów JSON na typy PHP

Porównanie typów danych JSON automatycznie wnioskowanych przez narzędzie z odpowiadającymi typami PHP:

Przykładowa wartość JSONMetoda wykrywaniaWygenerowany typ PHPDomyślna wartość właściwości
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''
[...] (pusta tablica)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>)[]
{...} (zagnieżdżony obiekt)typeof value === 'object' && !Array.isArray(value)Xxx (niezależna klasa)new Xxx()

Tabela porównawcza 4 stylów kodu PHP

4 style kodu klas PHP obsługiwane przez narzędzie. Wybierz według potrzeb projektu:

Styl koduDziedziczenie / ModyfikatorImplementowane interfejsyScenariusz zastosowania
Styl ArrayObjectextends \ArrayObjectimplements \JsonSerializableEkosystem Symfony Serializer, potrzebny dostęp tablicowy $obj['key'], kompatybilność z biblioteką standardową PHP
Styl stdClassextends \stdClassimplements \JsonSerializableWordPress REST API, kompatybilność domyślnego zachowania json_decode, lekki nośnik danych obiektowych
Styl readonly classfinal readonly class (bez dziedziczenia)implements \JsonSerializablePHP 8.1+, DTO odpowiedzi API, niezmienne obiekty transferu danych, gwarancja niezmienności danych po konstrukcji
Styl integracji LaravelBez dziedziczenia (domyślnie)implements \Jsonable, \Arrayable, \JsonSerializableLaravel Eloquent API Resource, warstwa modeli Eloquent, formatowanie odpowiedzi kontrolera

Privacy & Security

Wszystkie operacje analizy JSON, generowania klas PHP, tworzenia pakietów ZIP tego narzędzia JSON do PHP są wykonywane całkowicie lokalnie w Twojej przeglądarce przez JavaScript (quicktype-core + JSZip); wprowadzone dane JSON i wygenerowany kod PHP nie są wysyłane na żaden serwer, nie są przechowywane, buforowane ani zapisywane w chmurze. Wrażliwe JSON zawierające pola interfejsu wewnętrznego, nieopublikowane struktury biznesowe, niepubliczne odpowiedzi API można bezpiecznie używać; wszystkie dane są usuwane po zamknięciu strony. To narzędzie nie używa żadnych plików Cookie do śledzenia użytkowników, nie zbiera adresów e-mail ani informacji o koncie, nie integruje skryptów statystycznych stron trzecich; wszystkie obliczenia odbywają się w procesie przeglądarki bieżącego urządzenia. Nawet w środowisku offline (np. rozłączenie lub izolowana intranet) działa normalnie, o ile zasoby strony zostały załadowane raz.

Authoritative References