logo
GeekFormat

JSON से PHP

मुफ्त ऑनलाइन JSON से PHP टूल। JSON को एक क्लिक में चलने योग्य PHP क्लास में बदलें। ArrayObject और stdClass स्टाइल सपोर्ट करता है, स्वचालित रूप से namespace, typed properties (PHP 7.4+), वैकल्पिक readonly class (PHP 8.1+) जेनरेट करता है, JsonSerializable को implements करता है, नेस्टेड ऑब्जेक्ट स्वचालित रूप से स्वतंत्र क्लास में विभाजित होते हैं, एरे स्वचालित रूप से PHP array में बदल जाते हैं, ब्राउज़र में स्थानीय रूप से चलता है, अपलोड की आवश्यकता नहीं।

संबंधित सुझाव

JSON से PHP कनवर्टर और PHP एंटिटी मॉडलिंग के बारे में

JSON से PHP टूल (JSON to PHP Converter) एक यूटिलिटी है जो JSON डेटा संरचनाओं को स्वचालित रूप से मानक PHP क्लास कोड में बदलती है। यह डेवलपर्स को मैन्युअल रूप से namespace / class / public properties / कंस्ट्रक्टर लिखने के दोहराव वाले काम से मुक्त करती है, विशेष रूप से API इंटरफेस दस्तावेज़ों में सैंपल JSON को जल्दी से PHP एंटिटी क्लास में बदलने के लिए उपयुक्त है जिन्हें Composer प्रोजेक्ट में सीधे require किया जा सकता है।

यह टूल 4 मुख्यधारा के कोड स्टाइल को सपोर्ट करता है: ① ArrayObject स्टाइल (\ArrayObject से इनहेरिट करता है, एरे एक्सेस और ऑब्जेक्ट एक्सेस को सपोर्ट करता है, Laravel / Symfony Serializer इकोसिस्टम में आमतौर पर उपयोग किया जाता है); ② stdClass स्टाइल (\stdClass से इनहेरिट करता है, केवल ऑब्जेक्ट एक्सेस, WordPress / json_decode डिफ़ॉल्ट व्यवहार); ③ readonly class स्टाइल (PHP 8.1+ final readonly class, कंस्ट्रक्शन के बाद अपरिवर्तनीय, DTO के लिए उपयुक्त); ④ Laravel इंटीग्रेशन स्टाइल (Jsonable + Arrayable को implement करता है, Eloquent API Resource के साथ काम करता है)। डेवलपर्स प्रोजेक्ट द्वारा उपयोग किए जाने वाले फ्रेमवर्क के अनुसार स्वतंत्र रूप से चुन सकते हैं।

PHP टाइप मैपिंग JSON से PHP का मूल है। टूल JSON मूल प्रकारों को PHP मानक प्रकारों से मैप करता है: स्ट्रिंग string से मैप होती है, पूर्णांक int से मैप होते हैं, फ़्लोट float से मैप होते हैं, बूलियन bool से मैप होते हैं, एरे array से मैप होते हैं, नेस्टेड ऑब्जेक्ट स्वतंत्र क्लास (कैपिटलाइज़्ड फ़ील्ड नाम) से मैप होते हैं, null ?type (नलएबल प्रॉपर्टी) से मैप होता है। सभी प्रॉपर्टी PHP 7.4+ typed properties के साथ घोषित की जाती हैं; IDE सीधे टाइप चेकिंग कर सकता है।

एक और विशिष्ट हाइलाइट 'JsonSerializable इंटरफ़ेस का स्वचालित कार्यान्वयन' है: इस टूल द्वारा जनरेट की गई प्रत्येक PHP क्लास स्वचालित रूप से \JsonSerializable को implement करती है और public function jsonSerialize(): mixed { return [...] } मेथड जेनरेट करती है। इसका मतलब है कि आप सीधे echo json_encode($user) से JSON स्ट्रिंग आउटपुट कर सकते हैं; json_encode स्वचालित रूप से jsonSerialize() द्वारा रिटर्न की गई एरे डेटा को कॉल करती है। Laravel में Jsonable इंटरफेस के साथ आप बिना किसी अतिरिक्त प्रोसेसिंग के सीधे return response()->json($user) रिटर्न कर सकते हैं।

कुछ ऑनलाइन टूल के विपरीत जिन्हें प्रोसेसिंग के लिए JSON को सर्वर पर अपलोड करने की आवश्यकता होती है, इस टूल की सभी गणनाएं ब्राउज़र में पूरी होती हैं। quicktype-core Web Worker के माध्यम से लोड और निष्पादित होता है; JSON पार्सिंग, टाइप इंफरेंस, PHP कोड जनरेशन, ZIP पैकेजिंग सभी स्थानीय रूप से होती हैं, किसी सर्वर पर कोई डेटा नहीं भेजा जाता। यह API कुंजियों, उपयोगकर्ता गोपनीयता फ़ील्ड या अप्रकाशित व्यावसायिक संरचनाओं वाले JSON के लिए विशेष रूप से महत्वपूर्ण है; पेज बंद होने के बाद डेटा मेमोरी से साफ हो जाता है।

जनरेट किए गए कोड को आमतौर पर उपयोग के लिए Composer प्रोजेक्ट में रखने की आवश्यकता होती है। आपको यह सुनिश्चित करना होगा कि composer.json में PHP संस्करण आवश्यकताओं को पूरा करता है (PHP 7.4+ typed properties को सपोर्ट करता है, PHP 8.1+ readonly class को सपोर्ट करता है), फिर जनरेट की गई क्लास को src डायरेक्ट्री में कॉपी करें, namespace (PSR-4) के माध्यम से autoload करें। इसके बाद आप json_decode($jsonString, false) या json_decode($jsonString, true) + डीसीरियलाइज़ेशन के साथ डेटा का उपभोग कर सकते हैं, PHP टाइप सिस्टम की सुविधा का आनंद लेते हुए।

उपयोग के मामले

  • Laravel बैकएंड डेवलपमेंट: API दस्तावेज़ सैंपल JSON को जल्दी से Eloquent Model / API Resource क्लास में बदलना, Laravel बिल्ट-इन Jsonable / Arrayable इंटरफेस के साथ सीधे रिस्पॉन्स सीरियलाइज़ेशन
  • Symfony Serializer इंटीग्रेशन: तीसरे पक्ष के API से रिटर्न JSON को ArrayObject स्टाइल PHP क्लास में बदलना, Symfony Serializer के साथ डीप ऑब्जेक्ट मैपिंग और डेटा वैलिडेशन
  • WordPress REST API: कस्टम एंडपॉइंट से रिटर्न JSON स्ट्रक्चर को stdClass स्टाइल PHP क्लास में बदलना, wp_send_json() के साथ सीधे आउटपुट, wp_json_encode() डिफ़ॉल्ट व्यवहार से मेल खाना
  • PHP 8.1+ readonly DTO: JSON को Data Transfer Objects (DTO) के लिए final readonly class में बदलना, कंस्ट्रक्शन के बाद अपरिवर्तनीय, व्यावसायिक लॉजिक को रिस्पॉन्स डेटा को गलती से संशोधित करने से रोकना
  • Composer पैकेज डेवलपमेंट: JSON Schema को PHP क्लास में बदलकर Packagist पर SDK मॉडल लेयर के रूप में प्रकाशित करना, require के माध्यम से अन्य Composer प्रोजेक्ट द्वारा पुन: उपयोग
  • यूनिट टेस्ट फिक्सचर: JSON फिक्सचर को PHP क्लास में बदलना फिर json_decode + डीसीरियलाइज़ेशन का उपयोग करके टेस्ट डेटा ड्राइविंग, स्ट्रक्चर्ड फ़ील्ड पर असर्ट
  • डेटा माइग्रेशन स्क्रिप्ट: JSON कॉन्फ़िगरेशन फ़ाइलों को दृढ़ता से टाइप किए गए व्यावसायिक लॉजिक एक्सेस के लिए PHP क्लास में बदलना, एरे एक्सेस से बेहतर IDE ऑटोकम्प्लीट और टाइप चेकिंग
  • फ्रंटएंड मॉक इंटीग्रेशन: बैकएंड पहले JSON मॉडल को PHP क्लास में बदलता है; फ्रंटएंड को समवर्ती रूप से संबंधित TypeScript इंटरफेस / PHP क्लास मिलती है, दोनों सिरों पर टाइप सुसंगत रखते हुए
  • कोड रिव्यू: API से रिटर्न JSON को सीधे पढ़ने योग्य PHP क्लास में बदलना, कोड रिव्यू के दौरान फ़ील्ड नेमिंग, प्रॉपर्टी विज़िबिलिटी की चर्चा को सुगम बनाना
  • लीगेसी प्रोजेक्ट रिफैक्टरिंग: एसोसिएटिव एरे के माध्यम से डायनेमिक रूप से एक्सेस किए गए कोड को दृढ़ता से टाइप किए गए PHP क्लास एक्सेस में रिफैक्टर करना, PHPStan / Psalm के साथ स्टैटिक एनालिसिस
  • PHPUnit DataProvider: JSON टेस्ट डेटा को PHP क्लास में बदलना फिर DataProvider के माध्यम से टेस्ट केस में इंजेक्ट करना, IDE स्वचालित रूप से प्रॉपर्टी फ़ील्ड सुझाता है
  • snake_case बैकएंड API इंटीग्रेशन: बैकएंड API snake_case फ़ील्ड रिटर्न करता है; फ्रंटएंड PHP सिस्टम सीमलेस इंटीग्रेशन के लिए 'camelCase में कनवर्ट करें' + ArrayObject स्टाइल सक्षम करता है
  • PHPStan स्टैटिक एनालिसिस: जनरेट की गई क्लास स्वाभाविक रूप से टाइप घोषणाओं के साथ आती हैं; CI में phpstan analyse --level=8 के साथ टाइप एरर इंटरसेप्ट करना
  • शिक्षण और प्रशिक्षण: PHP शिक्षण परिदृश्यों में OOP मॉडलिंग, टाइप सिस्टम, इंटरफेस कार्यान्वयन को प्रदर्शित करने के लिए सैंपल JSON को PHP क्लास में बदलना
  • API गेटवे लेयर: अपस्ट्रीम माइक्रोसर्विसेज से रिटर्न JSON को गेटवे लेयर एग्रीगेशन के लिए PHP क्लास में बदलना; डाउनस्ट्रीम PHP सर्विसेज क्लास प्रॉपर्टी के माध्यम से दृढ़ता से टाइप की हुई खपत करती हैं
  • मैसेज क्वींज कंजम्पशन: RabbitMQ / Kafka से कंज्यूम किए गए JSON मैसेज बॉडी को PHP क्लास में बदलकर स्टोर या फॉरवर्ड करना; JSON_THROW_ON_ERROR के साथ सख्त पार्सिंग
  • ई-कॉमर्स SKU/SPU मॉडलिंग: प्रोडक्ट JSON स्ट्रक्चर (मल्टी-स्पेक/मल्टी-इमेज/मल्टी-एट्रिब्यूट) को PHP क्लास में बदलना, Laravel में N+1 क्वेरी ऑप्टिमाइज़ेशन के लिए ArrayObject स्टाइल के साथ
  • WebHook कॉलबैक सिग्नेचर वेरिफिकेशन: पेमेंट गेटवे, लॉजिस्टिक्स कॉलबैक से JSON सिग्नेचर वेरिफिकेशन स्ट्रक्चर को PHP क्लास में बदलना, hash_hmac() के साथ सिग्नेचर वेरिफिकेशन
  • OpenAPI टूलचेन: OpenAPI 3.x स्कीमा JSON को PHP क्लास में बदलना, Swagger Codegen / Apifox PHP क्लाइंट जेनरेशन फ़्लो के साथ एकीकृत करना
  • डेटा ETL पाइपलाइन: अपस्ट्रीम डेटा स्रोतों (MySQL JSON फ़ील्ड / MongoDB / Elasticsearch) से JSON को PHP क्लास में बदलना फिर डेटा क्लीनिंग और स्टोरेज

उपयोग कैसे करें

  1. JSON ऑब्जेक्ट (अनुशंसित) या एरे को बाएं संपादक में पेस्ट करें, या चीनी सैंपल लोड करने के लिए 'Sample' पर क्लिक करें (नेस्टेड address / company / tags के साथ)
  2. टूलबार में 'Settings' बटन पर क्लिक करें; पॉपअप में चुनें: ① रूट क्लास नाम सेट करें (जैसे User) और namespace (जैसे App\Models); ② कोड स्टाइल चुनें (ArrayObject / stdClass / readonly class); ③ कोड फीचर चुनें (typed properties / Laravel इंटीग्रेशन / Symfony Serializer); ④ फ़ील्ड नेमिंग स्ट्रैटेजी चुनें (मूल रखें / camelCase / सभी लोअरकेस / UPPER_SNAKE)
  3. टूल 400ms के भीतर स्वचालित रूप से कनवर्ट करता है; दाईं ओर सभी जनरेट की गई PHP क्लास प्रदर्शित होती हैं (प्रत्येक क्लास एक स्वतंत्र कार्ड, टाइटल बार रीयल-टाइम में वर्तमान स्टाइल बैज दिखाती है); यदि JSON में फ़ॉर्मेट एरर है, तो 'JSON ठीक करें' बटन दिखाई देता है
  4. जांचें कि जनरेट की गई क्लास के नाम, प्रॉपर्टी के नाम और इंटरफेस अपेक्षाओं से मेल खाते हैं; यदि समायोजन की आवश्यकता है, सोर्स JSON की नामों को संशोधित करें या विकल्पों को संशोधित करने के लिए सेटिंग्स फिर से खोलें
  5. संतुष्ट होने पर, IDE में पेस्ट करने के लिए सिंगल क्लास के 'कॉपी' बटन पर क्लिक करें, या सभी क्लास एक-क्लिक डाउनलोड के लिए टूलबार में 'Download ZIP' पर क्लिक करें (namespace पाथ के अनुसार व्यवस्थित डायरेक्ट्री संरचना)

विशेषताएं

  • दो कोड स्टाइल, स्वतंत्र रूप से स्विच करने योग्य: ArrayObject (\ArrayObject से इनहेरिट करता है, $obj['key'] array-स्टाइल एक्सेस का समर्थन करता है) / stdClass (\stdClass से इनहेरिट करता है, $obj->key ऑब्जेक्ट-स्टाइल एक्सेस का समर्थन करता है), Laravel सीरियलाइज़ेशन, WordPress REST, Symfony Serializer और अन्य परिदृश्यों के साथ संगत
  • संपूर्ण PHP टेम्पलेट: स्वचालित रूप से namespace घोषणा + use स्टेटमेंट + क्लास हेडर कमेंट (Copyright + जनरेशन टाइमस्टैम्प) + क्लास डेफिनिशन + typed public properties (PHP 7.4+) जेनरेट करता है, मैन्युअल बॉयलरप्लेट के बिना सीधे Composer प्रोजेक्ट में require किया जा सकता है
  • JsonSerializable इंटरफ़ेस स्वचालित रूप से implemented: प्रत्येक क्लास स्वचालित रूप से public function jsonSerialize(): mixed { return [...] } जेनरेट करती है, json_encode() के साथ सीधे JSON सीरियलाइज़ करती है, शून्य अतिरिक्त बॉयलरप्लेट कोड
  • PHP 8.1+ readonly class वैकल्पिक: सक्षम होने पर, जनरेट की गई क्लास में final readonly class जोड़ा जाता है, सभी प्रॉपर्टी readonly होती हैं, कंस्ट्रक्शन के बाद अपरिवर्तनीय, API रिस्पॉन्स DTO अपरिवर्तनीय परिदृश्यों के लिए उपयुक्त
  • स्मार्ट टाइप इंफरेंस: string → string, integer → int, float → float, bool → bool, array → array, नेस्टेड ऑब्जेक्ट → स्वतंत्र class, null → ?type (नलएबल प्रॉपर्टी), मैन्युअल फ़ील्ड टाइप निर्दिष्ट करने की आवश्यकता नहीं
  • नेस्टेड क्लास स्वचालित विभाजन: नेस्टेड ऑब्जेक्ट कैपिटलाइज़्ड फ़ील्ड नामों से स्वतंत्र PHP क्लास जेनरेट करते हैं (जैसे address → Address), एरे में ऑब्जेक्ट 'अंतिम s हटाएं' नियम से नामित होते हैं (जैसे users → User), सभी नेस्टेड क्लास भी JsonSerializable को implement करती हैं
  • 4 फ़ील्ड नेमिंग रणनीतियाँ: मूल रखें / snake_case से camelCase (user_name → userName) / सभी लोअरकेस / UPPER_SNAKE कॉन्स्टेंट स्टाइल, PSR-1 / Laravel / Symfony कोड कन्वेंशन से मेल खाती हैं
  • Laravel एक-क्लिक इंटीग्रेशन: चेक करने पर, स्वचालित रूप से Jsonable, Arrayable इंटरफेस implement करता है, toArray() / toJson() मेथड जोड़ता है, Composer autoload के साथ सीधे Eloquent API Resource के रूप में उपयोग किया जा सकता है
  • सिंगल क्लास कॉपी + ZIP मल्टी-फाइल डाउनलोड: प्रत्येक PHP क्लास में स्वतंत्र 'कॉपी' बटन होता है, namespace डायरेक्ट्री संरचना के अनुसार व्यवस्थित ZIP पैकेज एक क्लिक में डाउनलोड करें (जैसे App/Models/User.php), अनज़िप करें और उपयोग करें
  • स्थानीय ब्राउज़र रन + हिस्ट्री: JSON पार्सिंग, PHP क्लास जनरेशन, ZIP पैकेजिंग सभी JavaScript (quicktype-core + JSZip) के माध्यम से ब्राउज़र में पूरी होती है, डेटा किसी सर्वर पर अपलोड नहीं होता; हाल के 200 इनपुट के लिए बिल्ट-इन localStorage हिस्ट्री

कोड उदाहरण

PHP: इस टूल द्वारा जनरेट की गई क्लास को json_encode() से सीरियलाइज़ करें

php

इस टूल द्वारा जनरेट की गई PHP क्लास डिफ़ॉल्ट रूप से JsonSerializable इंटरफ़ेस को implement करती हैं, बिना किसी अतिरिक्त प्रोसेसिंग के json_encode() के साथ सीधे JSON आउटपुट करती हैं।

<?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;         // alice@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: Laravel API Resource इंटीग्रेशन उदाहरण

php

Laravel इंटीग्रेशन चेक करने के बाद, इस टूल द्वारा जनरेट की गई क्लास सीधे Eloquent API Resource के रूप में उपयोग की जा सकती हैं, 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: Symfony Serializer इंटीग्रेशन उदाहरण

php

इस टूल द्वारा ArrayObject स्टाइल में जनरेट की गई क्लास जटिल API गेटवे लेयर के लिए उपयुक्त डीप सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए Symfony Serializer कंपोनेंट के साथ काम कर सकती हैं।

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

अधिकांश PHP बैकएंड प्रोजेक्ट के लिए, ArrayObject स्टाइल जनरेट की गई क्लास एरे एक्सेस ($obj['key']) और ऑब्जेक्ट एक्सेस ($obj->key) दोनों को सपोर्ट करती हैं; साथ ही डिफ़ॉल्ट रूप से कार्यान्वित JsonSerializable इंटरफ़ेस के साथ, json_encode() jsonSerialize() द्वारा रिटर्न की गई एरे को स्वचालित रूप से कॉल करती है। यह PHP इकोसिस्टम में सबसे सार्वभौमिक ऑब्जेक्ट डेटा वाहक पैटर्न है, Laravel, Symfony, CodeIgniter जैसे लगभग सभी मुख्यधारा के फ्रेमवर्क के साथ संगत है।

PHP 8.1+ में पेश की गई readonly class DTO के लिए सर्वोत्तम अभ्यास है: प्रॉपर्टी कंस्ट्रक्शन के बाद संशोधित नहीं की जा सकतीं, व्यावसायिक लॉजिक को रिस्पॉन्स डेटा को गलती से संशोधित करने से रोकती है; कंस्ट्रक्टर प्रमोशन कोड को अधिक संक्षिप्त बनाता है (public function __construct(public int $id, public string $name) {} प्रॉपर्टी घोषणा के लिए एक पंक्ति)। हम API रिस्पॉन्स DTO, WebHook कॉलबैक स्ट्रक्चर, तीसरे पक्ष के API क्लाइंट मॉडल को readonly class स्टाइल में बदलने की सिफारिश करते हैं।

Laravel डेटाबेस फ़ील्ड डिफ़ॉल्ट रूप से snake_case का उपयोग करती हैं, लेकिन PHP प्रॉपर्टी camelCase की सिफारिश की जाती है। इस टूल की 'camelCase में कनवर्ट करें' रणनीति स्वचालित रूप से कनवर्ट करती है, जबकि jsonSerialize() रिटर्न एरे की मूल snake_case रखती है; json_encode() आउटपुट अभी भी snake_case है। यह Laravel मॉडल एक्सेस आदतों के अनुरूप है और API संगतता बनाए रखता है।

जनरेट की गई ZIP पैकेज namespace पाथ (जैसे App/Models/User.php) के अनुसार व्यवस्थित हैं। composer.json में autoload.psr-4 सेक्शन कॉन्फ़िगर करें, जैसे: "App\\": "src/", फिर composer dump-autoload निष्पादित करें। इस तरह Composer App\Models\User को स्वचालित रूप से src/Models/User.php पर मैप करता है, मैन्युअल require की आवश्यकता नहीं।

यह टूल डिफ़ॉल्ट रूप से typed properties (PHP 7.4+) जनरेट करता है, PHPStan --level=8 मोड में प्रॉपर्टी टाइप पूरी तरह से इंफर कर सकती है। टाइप एरर इंटरसेप्ट करने के लिए CI पाइपलाइन में phpstan analyse ./src --level=8 एकीकृत करने की सिफारिश करते हैं। Psalm भी मजबूत टाइप वैलिडेशन के लिए PropertyTypeProvider को सपोर्ट करता है।

यह टूल पूरी तरह से ब्राउज़र में स्थानीय रूप से चलता है, कोई डेटा अपलोड नहीं करता। लेकिन आदत बनाएं: ① कनवर्ज़न से पहले API कुंजियाँ/टोकन/उपयोगकर्ता गोपनीयता वाले JSON को असंवेदनशील बनाएं; ② बड़े आंतरिक व्यावसायिक संरचनाओं (अप्रकाशित इंटरफेस) के लिए इस टूल का उपयोग करते समय नेटवर्क कनेक्शन कटा हुआ सुनिश्चित करें; ③ कोड जनरेट करने के बाद संवेदनशील जानकारी वाले सैंपल डेटा को सार्वजनिक रिपॉजिटरी में कमिट न करें।

नेस्टेड JSON ऑब्जेक्ट रिकर्सिवली स्वतंत्र PHP क्लास जनरेट करती हैं। यदि JSON नेस्टिंग स्तर 6 परतों से अधिक है (जैसे बहु-स्तरीय नेस्टेड मेनू, संगठन चार्ट, जटिल व्यावसायिक दस्तावेज़), जनरेट की गई क्लास की संख्या विस्फोट करती है (प्रति परत N नेस्टेड क्लास), IDE धीमी लोड होती है और रखरखाव कठिन होता है। सुझाव: ① JSON को कई मॉड्यूल में विभाजित करें और अलग-अलग कनवर्ट करें; ② या जनरेशन के बाद क्लास नेस्टिंग के बजाय एरे इंडेक्सिंग ($user['profile']['address']['city']) के लिए मैन्युअल रूप से रिफैक्टर करें।

JSON null वैल्यू डिफ़ॉल्ट रूप से ?mixed (nullable mixed) के रूप में इंफर की जाती हैं, जो सुरक्षित फ़ॉलबैक है लेकिन सटीक टाइप नहीं है। यदि फ़ील्ड टाइप ज्ञात है (जैसे "nickname": "" string इंफर करती है), पहले सोर्स JSON में उदाहरण मान दें, जनरेशन के बाद उदाहरण मान हटाएं और ?string जैसे सटीक टाइप में बदलें, यह PHPStan स्टैटिक एनालिसिस सटीकता को काफी बेहतर बनाता है।

सामान्य प्रश्न

JSON को PHP क्लास में कैसे बदलें?

JSON सामग्री को बाईं इनपुट बॉक्स में पेस्ट करें; टूल 400ms के भीतर स्वचालित रूप से कनवर्ट कर देगा; या टूलबार में 'Convert' बटन पर क्लिक करें। कनवर्ज़न के बाद, सभी जनरेट की गई PHP क्लास दाईं ओर प्रदर्शित होंगी; प्रत्येक क्लास में स्वतंत्र 'कॉपी' बटन होता है; सभी क्लास को पैकेज और डाउनलोड करने के लिए टूलबार में 'Download ZIP' पर क्लिक करें (namespace डायरेक्ट्री संरचना के साथ)।

कौन सी JSON डेटा संरचनाएं सपोर्टेड हैं?

दो संरचनाएं सपोर्टेड हैं: ① JSON ऑब्जेक्ट (रूट क्लास के रूप में, स्वचालित रूप से class RootClass जेनरेट करता है); ② JSON एरे (एरे में पहला ऑब्जेक्ट रूट क्लास टेम्पलेट के रूप में)। सभी नेस्टेड ऑब्जेक्ट रिकर्सिवली स्वतंत्र क्लास में प्रोसेस किए जाते हैं; एरे में ऑब्जेक्ट रिकर्सिवली एरे एलिमेंट टाइप के अनुरूप क्लास में प्रोसेस किए जाते हैं।

जनरेट की गई PHP क्लास में क्या सामग्री होती है?

प्रत्येक जनरेट की गई .php फ़ाइल में शामिल है: ① फ़ाइल हेडर कमेंट (Copyright + स्वचालित रूप से जनरेट किया गया टाइमस्टैम्प); ② namespace घोषणा; ③ use स्टेटमेंट (आवश्यकतानुसार \JsonSerializable / \ArrayAccess स्वचालित रूप से इम्पोर्ट करता है); ④ क्लास डेफिनिशन (सेटिंग्स के अनुसार ArrayObject / stdClass / readonly class); ⑤ implements इंटरफेस (सेटिंग्स के अनुसार JsonSerializable / Jsonable / Arrayable); ⑥ typed public properties (PHP 7.4+); ⑦ कंस्ट्रक्टर (सेटिंग्स के अनुसार पूर्ण प्रॉपर्टी असाइनमेंट); ⑧ jsonSerialize() / toArray() / toJson() जैसे मेथड। php -l सिंटैक्स चेक और require उपयोग के लिए पूर्ण और तैयार।

ArrayObject और stdClass स्टाइल के बीच क्या अंतर है?

ArrayObject स्टाइल: जनरेट की गई क्लास \ArrayObject से इनहेरिट करती है, $obj['key'] एरे एक्सेस और $obj->key ऑब्जेक्ट एक्सेस दोनों को सपोर्ट करती है, json_encode() के दौरान ऑब्जेक्ट रिटर्न करती है। stdClass स्टाइल: जनरेट की गई क्लास \stdClass से इनहेरिट करती है, केवल $obj->key ऑब्जेक्ट एक्सेस सपोर्ट करती है, हल्की है लेकिन सीधे एरे एक्सेस नहीं है। Laravel / WordPress इकोसिस्टम डिफ़ॉल्ट रूप से stdClass स्टाइल का उपयोग करती है (json_decode डिफ़ॉल्ट व्यवहार), Symfony Serializer डिफ़ॉल्ट रूप से ArrayObject स्टाइल का उपयोग करती है।

क्या यह Laravel API Resource जनरेट करने का समर्थन करता है?

हाँ। सेटिंग्स में 'Laravel एक-क्लिक इंटीग्रेशन' विकल्प चेक करने के बाद, टूल स्वचालित रूप से Jsonable, Arrayable इंटरफेस implement करता है, toJson($options = 0) और toArray() मेथड जोड़ता है; जनरेट की गई क्लास सीधे Eloquent API Resource में उपयोग की जा सकती हैं (जैसे new UserResource($user) या $user->toArray())। यह स्वचालित रूप से Illuminate\Contracts\Support\Jsonable और Illuminate\Contracts\Support\Arrayable का भी उपयोग करता है।

PHP 8.1 readonly class मोड के साथ जनरेट किया गया कोड कैसा दिखता है?

readonly class सक्षम करने के बाद, जनरेट की गई PHP क्लास काफी सुव्यवस्थित हो जाती हैं। उदाहरण के लिए, readonly सक्षम class User लगभग 12 पंक्तियाँ हैं: final readonly class User implements \JsonSerializable { public function __construct(public int $id, public string $name) {} public function jsonSerialize(): array { return [...] } }। सभी प्रॉपर्टी कंस्ट्रक्टर प्रॉपर्टी प्रमोशन के माध्यम से readonly के रूप में घोषित की जाती हैं, कंस्ट्रक्शन के बाद अपरिवर्तनीय। नोट: प्रोजेक्ट को PHP 8.1+ की आवश्यकता है, readonly फ़ील्ड केवल कंस्ट्रक्टर के माध्यम से असाइन की जा सकती हैं।

snake_case फ़ील्ड नामों को camelCase में कैसे बदलें?

सेटिंग्स पॉपअप के 'फ़ील्ड नेमिंग स्ट्रैटेजी' समूह में, 'camelCase में कनवर्ट करें' मोड चुनें; टूल स्वचालित रूप से JSON फ़ील्ड नामों को snake_case से PHP अनुशंसित नेमिंग स्टाइल में बदल देता है। जैसे user_name → userName, created_at → createdAt, is_active → isActive। इसके अलावा यदि JSON Laravel रूट बाइंडिंग से आता है, तो क्लास प्रॉपर्टी को मैन्युअल मध्यवर्ती रूपांतरण के बिना सीधे $request->userName के माध्यम से एक्सेस किया जा सकता है।

नेस्टेड JSON ऑब्जेक्ट कैसे हैंडल किए जाते हैं?

टूल नेस्टेड ऑब्जेक्ट के लिए स्वचालित रूप से स्वतंत्र PHP क्लास बनाता है। नेमिंग नियम: नेस्टेड ऑब्जेक्ट की को क्लास नाम के रूप में कैपिटलाइज़ किया जाता है (जैसे address → Address), एरे में ऑब्जेक्ट की के अंतिम s को हटाकर कैपिटलाइज़ किया जाता है (जैसे users → User)। सभी नेस्टेड क्लास में पूर्ण फ़ील्ड, कंस्ट्रक्टर, jsonSerialize() मेथड भी शामिल हैं, namespace रूट क्लास के अनुरूप है, use App\Models\Address के माध्यम से इम्पोर्ट किया जा सकता है।

एरे फ़ील्ड स्वचालित रूप से क्या में कनवर्ट होती हैं?

हाँ। JSON में एरे फ़ील्ड स्वचालित रूप से PHP array प्रॉपर्टी में कनवर्ट होती हैं; एलिमेंट टाइप पहले एलिमेंट से स्वचालित रूप से इंफर की जाती है। जैसे ["a","b","c"] → array (कमेंट में array<string> एनोटेटेड); [{...},{...}] → array (कमेंट में array<User> एनोटेटेड, User की से नामित नई क्लास है); खाली एरे [] डिफ़ॉल्ट रूप से array (कमेंट में array<mixed> एनोटेटेड)। PHPDoc एनोटेशन के साथ PHP 8.0+ IDE में टाइप हिंट देता है।

रूट क्लास नाम और namespace कैसे संशोधित करें?

टूलबार के ऊपरी दाएं कोने में सेटिंग्स बटन; सेटिंग्स डायलॉग खोलने के लिए क्लिक करें, सेट कर सकते हैं: ① रूट क्लास नाम (डिफ़ॉल्ट JsonRootClass); ② namespace (डिफ़ॉल्ट App\Models)। संशोधन के बाद, सभी जनरेट की गई क्लास के नाम समकालिक रूप से अपडेट होंगे; ZIP डायरेक्ट्री संरचना भी namespace के अनुसार व्यवस्थित होगी (जैसे App/Models/User.php)।

क्या डाउनलोड सिंगल .php फ़ाइल है या ZIP पैकेज?

डाउनलोड ZIP पैकेज (User.zip) है, जिसमें namespace पाथ के अनुसार व्यवस्थित सभी जनरेट की गई PHP क्लास शामिल हैं। जैसे जब namespace App\Models है, ZIP के अंदर फ़ाइल संरचना: App/Models/User.php, App/Models/Address.php, App/Models/Company.php आदि। unzip कमांड या IDE के माध्यम से सीधे Composer प्रोजेक्ट की src डायरेक्ट्री में इम्पोर्ट की जा सकती हैं।

क्या सिंगल क्लास सीधे IDE में कॉपी की जा सकती है?

हाँ। प्रत्येक जनरेट की गई PHP क्लास स्वतंत्र कार्ड के रूप में प्रदर्शित होती है; कार्ड के ऊपरी दाएं कोने में 'कॉपी' बटन है; क्लिक करने से पूरी क्लास का कोड (<?php + namespace + use + class + प्रॉपर्टी + कंस्ट्रक्टर + मेथड सहित) क्लिपबोर्ड में कॉपी हो जाता है, PhpStorm / VS Code / Sublime जैसे IDE में सीधे पेस्ट किया जा सकता है।

जनरेट की गई क्लास को JsonSerializable इंटरफ़ेस implement कैसे कराएं?

डिफ़ॉल्ट रूप से सक्षम है। सभी जनरेट की गई PHP क्लास स्वचालित रूप से \JsonSerializable को implement करती हैं और public function jsonSerialize(): array { return [...] } मेथड जेनरेट करती हैं; रिटर्न एरे क्लास प्रॉपर्टी क्रम में असेंबल की जाती है। आप सीधे echo json_encode($user) से JSON स्ट्रिंग आउटपुट कर सकते हैं, या Laravel में return response()->json($user) रिटर्न कर सकते हैं।

क्या Symfony Serializer इस टूल द्वारा जनरेट की गई क्लास का उपयोग कर सकती है?

हाँ। Symfony Serializer डिफ़ॉल्ट रूप से एरे स्टाइल में डेटा पढ़ती है, जनरेट की गई ArrayObject स्टाइल क्लास के साथ अच्छी तरह से संगत है। SerializerInterface के $serializer->serialize($user, 'json) के साथ सीधे सीरियलाइज़ेशन किया जा सकता है; deserialize() के माध्यम से डीसीरियलाइज़ेशन के लिए public properties या getter मेथड की आवश्यकता होती है। यह टूल public properties + कंस्ट्रक्टर असाइनमेंट स्टाइल जेनरेट करता है, Symfony Serializer के PropertyNormalizer के साथ सीधे उपयोग योग्य है।

यदि JSON में फ़ॉर्मेट एरर हो तो क्या करें?

टूल स्वचालित रूप से JSON वैधता का पता लगाता है; एरर पर दाईं ओर लाल एरर प्रॉम्प्ट दिखाता है और 'JSON ठीक करें' बटन के साथ। क्लिक करने से सामान्य एरर स्वचालित रूप से ठीक हो जाते हैं: ① अंतिम अतिरिक्त अल्पविराम; ② सिंगल कोट्स को डबल कोट्स से बदलना; ③ बिना कोट के की को कोट्स के साथ पूरा करना; ④ कमेंट हटाना। सफल मरम्मत के बाद, सीधे PHP क्लास जेनरेट करने के लिए कनवर्ट किया जा सकता है।

क्या डेटा सर्वर पर अपलोड होता है? क्या गोपनीयता सुरक्षित है?

पूरी तरह से स्थानीय ब्राउज़र रन। सभी JSON पार्सिंग, PHP क्लास जनरेशन, ZIP पैकेजिंग JavaScript (quicktype-core + JSZip) के माध्यम से आपके ब्राउज़र में पूरी होती है; इनपुट JSON डेटा और जनरेट किया गया PHP कोड कभी भी किसी सर्वर पर अपलोड नहीं होता, न ही रिकॉर्ड किया जाता है या क्लाउड में कैश किया जाता है। आंतरिक इंटरफ़ेस फ़ील्ड, अप्रकाशित व्यावसायिक संरचनाएं, अप्रकाशित API रिस्पॉन्स वाले संवेदनशील JSON सुरक्षित रूप से उपयोग किए जा सकते हैं; पेज बंद होने पर डेटा साफ हो जाता है।

क्या 10,000 पंक्तियों वाला बड़ा JSON लैग का कारण बनता है?

टूल की कोई स्पष्ट पंक्ति सीमा नहीं है, लेकिन ब्राउज़र द्वारा बड़े JSON को पार्स करने और रेंडर करने से धीमापन आ जाता है। सुझाव: ① JSON को विभाजित करके बैच कनवर्ट करें; ② एक बार में एक नेस्टिंग स्तर पर ध्यान केंद्रित करें; ③ 100+ क्लास के बैच जनरेशन के लिए, सीधे IDE PHP टेम्पलेट प्लगइन का उपयोग करने या सरल quicktype CLI स्क्रिप्ट लिखने की सिफारिश की जाती है।

क्या जनरेट की गई PHP क्लास PHP 7.4 से नीचे के संस्करणों को सपोर्ट करती हैं?

पूरी तरह से सपोर्टेड नहीं। इस टूल द्वारा जनरेट की गई क्लास डिफ़ॉल्ट रूप से PHP 7.4+ typed properties का उपयोग करती हैं (जैसे public int $id)। यदि आपका प्रोजेक्ट अभी भी PHP 7.0~7.3 पर है, तो टाइप घोषणाएँ संगतता एरर का कारण बनेंगी। सुझाव: ① प्रोजेक्ट को PHP 8.1+ में अपग्रेड करें (अनुशंसित, बेहतर प्रदर्शन और टाइप सिस्टम); ② या जनरेशन के बाद IDE में टाइप घोषणाओं को बैच में हटा दें (Find & Replace `public int ` → `public `); ③ या PHP 7.4 संगत मोड का उपयोग करें (यह टूल PHP 7.4 को बेसलाइन के रूप में उपयोग करता है)।

समस्या निवारण

'कृपया JSON डेटा दर्ज करें' दिखाता है या दाईं ओर खाली है

बाईं इनपुट बॉक्स खाली है या केवल व्हाइटस्पेस वर्ण हैं। सुनिश्चित करें कि मान्य JSON सामग्री पेस्ट की गई है, या चीनी सैंपल लोड करने के लिए 'Sample' पर क्लिक करें, या .json / .txt फ़ाइलें चुनने के लिए 'Upload' पर क्लिक करें।

'Unexpected token ... in JSON at position N' दिखाता है

JSON फ़ॉर्मेट अमान्य है। सामान्य कारण: ① अंतिम अतिरिक्त अल्पविराम (जैसे {"a":1,}); ② डबल कोट्स के बजाय सिंगल कोट्स का उपयोग; ③ JSON के बजाय JS ऑब्जेक्ट नोटेशन (जैसे {key: value}) का उपयोग (जैसे {"key": "value"})। कुछ एरर को स्वचालित रूप से ठीक करने के लिए 'JSON ठीक करें' बटन पर क्लिक करें।

PHP 7.x प्रोजेक्ट में 'Typed property must not be accessed before initialization' एरर

इस टूल द्वारा जनरेट की गई क्लास डिफ़ॉल्ट रूप से PHP 7.4+ typed properties का उपयोग करती हैं (जैसे public int $id)। यदि आपका प्रोजेक्ट अभी भी PHP 7.0~7.3 पर है, तो टाइप घोषणाएँ संगतता समस्याओं का कारण बनेंगी। समाधान: ① प्रोजेक्ट को PHP 8.1+ में अपग्रेड करें (अनुशंसित); ② IDE में टाइप घोषणाओं को बैच में हटा दें (Find & Replace `public int ` → `public `); ③ 'PHP 7.4 typed properties' विकल्प को अनचेक करें (केवल कुछ कोड स्टाइल के लिए प्रभावी)।

PHP 8.1 readonly class 'Cannot modify readonly property' एरर

readonly class स्टाइल में जनरेट की गई प्रॉपर्टी कंस्ट्रक्शन के बाद संशोधित नहीं की जा सकतीं। यदि आप $user->name = 'Bob' करने का प्रयास करते हैं तो एरर होगी। समाधान: ① ArrayObject या stdClass स्टाइल में बदलें (प्रॉपर्टी संशोधन योग्य); ② या संशोधित करने के बजाय new User(...) के माध्यम से नया इंस्टेंस बनाएं।

Laravel प्रोजेक्ट में Illuminate\Contracts\Support\Jsonable नहीं मिल रहा

Laravel इंटीग्रेशन स्टाइल को laravel/framework निर्भरता की आवश्यकता होती है। composer.json में सुनिश्चित करें: "require": { "php": "^8.1", "laravel/framework": "^11.0" }। फिर निर्भरताएँ स्थापित करने के लिए composer update निष्पादित करें। यदि Laravel का उपयोग नहीं कर रहे हैं, तो कृपया ArrayObject या stdClass स्टाइल चुनें।

Symfony Serializer डीसीरियलाइज़ेशन विफलता 'Cannot denormalize object'

सामान्य कारण: ① जनरेट की गई क्लास में public properties या getter मेथड नहीं हैं (Symfony Serializer डिफ़ॉल्ट रूप से PropertyNormalizer का उपयोग करती है); ② क्लास में नो-आर्ग कंस्ट्रक्टर की कमी है लेकिन आवश्यक पैरामीटर हैं। समाधान: ① पुष्टि करें कि इस टूल ने public properties जनरेट की हैं; ② fromArray() स्टैटिक मेथड के माध्यम से मैन्युअल रूप से ऑब्जेक्ट बनाएं फिर Serializer को पास करें।

नेस्टेड ऑब्जेक्ट क्लास का नाम अपेक्षित नहीं है (जैसे categories को Categori नाम दिया गया)

टूल एरे में ऑब्जेक्ट के लिए 'अंतिम s हटाएं + कैपिटलाइज़' नेमिंग नियम का उपयोग करता है; categories जैसी अनियमित बहुवचन के लिए यह अनुकूल नहीं है। सुझाव: ① सोर्स JSON की को एकवचन में बदलें (जैसे categories → category); ② या जनरेशन के बाद IDE के Rename के माध्यम से क्लास का नाम बदलें (सभी संदर्भों को एक साथ संशोधित करते हुए)।

डाउनलोड की गई ZIP डायरेक्ट्री संरचना निष्कर्षण के बाद गलत है

ZIP के अंदर डायरेक्ट्री namespace सेटिंग (डिफ़ॉल्ट App/Models/) के अनुसार व्यवस्थित होती हैं। यदि निष्कर्षण के बाद स्थिति गलत है: ① namespace नाम संशोधित करें (जैसे App\Dto में) और फिर से डाउनलोड करें; ② unzip -d src/ के साथ निष्कर्षण डायरेक्ट्री निर्दिष्ट करें; ③ या IDE में सीधे निकाले गए पूरे फ़ोल्डर को फ़ाइल → खोलें।

जनरेट की गई क्लास ऑटोलोड नहीं हो रही हैं

Composer प्रोजेक्ट को composer.json में PSR-4 autoload मैपिंग कॉन्फ़िगर करने की आवश्यकता होती है, जैसे: "autoload": { "psr-4": { "App\\": "src/" } }। फिर composer dump-autoload निष्पादित करें; Composer स्वचालित रूप से namespace-से-डायरेक्ट्री मैपिंग के अनुसार क्लास फ़ाइलें लोड करेगा।

snake_case को camelCase में बदलने के बाद फ़ील्ड नाम एक्सेस बदल जाता है

'camelCase में कनवर्ट करें' PHP प्रॉपर्टी नाम बदलता है (जैसे user_name → userName), लेकिन jsonSerialize() मेथड में रिटर्न एरे की मूल snake_case रहती है; json_encode() आउटपुट JSON में अभी भी मूल फ़ील्ड नाम हैं। इसलिए PHP प्रॉपर्टी को $user->userName से एक्सेस करें, आउटपुट JSON अभी भी {"user_name": "..."} है। यदि डीसीरियलाइज़ेशन में भी camelCase एक्सेस चाहते हैं, तो jsonSerialize() रिटर्न एरे में की को camelCase में बदलना होगा।

100+ नेस्टेड क्लास जनरेट करते समय पेज लैग करता है

टूल की कोई स्पष्ट क्लास गिनती सीमा नहीं है, लेकिन बड़े DOM के लिए ब्राउज़र रेंडरिंग प्रदर्शन काफी कम हो जाता है। सुझाव: ① JSON को कई स्वतंत्र मॉड्यूल में विभाजित करें और अलग-अलग कनवर्ट करें; ② या सीधे IDE में बिल्ट-इन कोड जनरेशन टूल का उपयोग करें (जैसे PhpStorm का JSON to PHP प्लगइन); ③ नेस्टिंग स्तर 6 परतों से अधिक नहीं होने की सिफारिश की जाती है, अन्यथा JSON संरचना को रिफैक्टर करने का सुझाव दिया जाता है।

एरे संख्यात्मक प्रकार की है लेकिन array<int> जनरेट करती है जबकि वास्तव में array<float> है

टूल एरे के पहले एलिमेंट से टाइप इंफर करता है (जैसे [1, 2, 3] int के रूप में इंफर होती है, [1.5, 2.5] float के रूप में)। यदि आप पूर्णांक और फ़्लोट मिलाते हैं (जैसे [1, 2.5]), तो टूल पहले एलिमेंट से इंफर करेगा। समाधान: ① सोर्स JSON में कम से कम एक उदाहरण फ़्लोट एलिमेंट जोड़ें (जैसे [0.0, 1.5]); ② या जनरेशन के बाद PHPDoc एनोटेशन में टाइप मैन्युअल रूप से समायोजित करें।

null वैल्यू फ़ील्ड ?string के बजाय ?mixed टाइप के रूप में जनरेट होती है

JSON null वैल्यू डिफ़ॉल्ट रूप से टूल द्वारा ?mixed टाइप के रूप में इंफर की जाती है (क्योंकि वास्तविक टाइप निर्धारित नहीं किया जा सकता)। यह गलत निर्णय से बचने के लिए सुरक्षित अभ्यास है। यदि टाइप ज्ञात है, तो सोर्स JSON में इस फ़ील्ड को एक उदाहरण वैल्यू दें (जैसे "field": "" string इंफर करती है), जनरेशन के बाद टाइप को ?string में बदलें।

composer dump-autoload के बाद भी क्लास ऑटोलोड नहीं हो रही हैं

संभावित कारण: ① namespace डायरेक्ट्री से मेल नहीं खाता (जैसे namespace App\Models लेकिन फ़ाइल src/Dto/ में है); ② composer.json psr-4 मैपिंग गलत है (जैसे "App\\": "src/Dto/" होना चाहिए "App\\Dto\\": "src/Dto/")। समाधान: जांचें कि प्रत्येक .php फ़ाइल का namespace डायरेक्ट्री पाथ से सख्ती से मेल खाता है (namespace सेगमेंट डायरेक्ट्री सेगमेंट के बराबर होने चाहिए, केस-सेंसिटिव)।

PHPStan 'Property does not have default value' प्रॉम्प्ट करता है

जनरेट की गई typed properties का कोई डिफ़ॉल्ट मान नहीं है; PHPStan --level=8 मोड में उन्हें संभावित रूप से अप्रारंभिक मानता है। समाधान: ① PHPStan के strict rules को अक्षम करें; ② कंस्ट्रक्टर में खाली मान असाइन करें (जैसे $this->tags = []); ③ readonly class स्टाइल का उपयोग करें (कंस्ट्रक्टर प्रमोशन के बाद असाइन की गई)।

Symfony Serializer ऑब्जेक्ट एरे डीसीरियलाइज़ेशन विफलता

[{...},{...}] जैसी ऑब्जेक्ट एरे के लिए, PropertyNormalizer को एलिमेंट टाइप हिंट की आवश्यकता होती है। समाधान: ① PHPDoc में स्पष्ट रूप से array<User> टाइप निर्दिष्ट करें; ② या ArrayCollection से रैप करें ($users = new ArrayCollection())।

चीनी कीज़ विशेष वर्णों वाले PHP प्रॉपर्टी नाम जनरेट करती हैं

जब सोर्स JSON में चीनी कीज़ होती हैं (जैसे "姓名": "Alice"), टूल public string $姓名 प्रॉपर्टी जनरेट करता है; IDE नेमिंग गैर-मानक प्रॉम्प्ट कर सकता है लेकिन एरर नहीं देगा। सुझाव: ① JSON कीज़ को अंग्रेजी में बदलें (PHP PSR-1 नेमिंग के अधिक अनुरूप); ② चीनी रखते समय सुनिश्चित करें कि PHP फ़ाइल एन्कोडिंग UTF-8 है (PHP डिफ़ॉल्ट रूप से UTF-8 है)।

ArrayObject स्टाइल $obj['key'] और $obj->key आउटपुट क्रम असंगति

ArrayObject स्टाइल एरे एक्सेस प्रॉपर्टी घोषणा क्रम में रिटर्न करता है; ऑब्जेक्ट एक्सेस jsonSerialize() मेथड में रिटर्न एरे क्रम में रिटर्न करता है। यदि दो क्रम असंगत हैं, तो echo json_encode() आउटपुट var_dump($obj) के साथ असंगत हो जाता है। सुझाव: jsonSerialize() रिटर्न क्रम को कंस्ट्रक्टर पैरामीटर क्रम के अनुरूप रखें।

WebHook कॉलबैक JSON में न्यूमेरिक ID PHP_INT_MAX से अधिक है

PHP का int 64-बिट सिस्टम पर 64-बिट साइन्ड पूर्णांक है (अधिकतम 9223372036854775807); यदि JSON में न्यूमेरिक ID इस सीमा से अधिक है (जैसे Twitter स्नोफ्लेक ID), तो यह ट्रंकेट हो जाती है। समाधान: ① ID को स्ट्रिंग टाइप के रूप में प्राप्त करें ("id": "1234567890123456789"); ② JSON_BIGINT_AS_STRING फ़्लैग के साथ पार्स करें।

शब्दकोश

namespace
PHP 5.3+ में पेश किया गया नेमस्पेस तंत्र क्लास नाम टकराव से बचने के लिए। यह टूल उपयोगकर्ता द्वारा सेट किए गए namespace के अनुसार स्वचालित रूप से जेनरेट करता है और ZIP में App/Models/ डायरेक्ट्री द्वारा व्यवस्थित करता है।
class
PHP में ऑब्जेक्ट परिभाषित करने के लिए टेम्पलेट। यह टूल जो जनरेट करता है वह मानक PHP क्लास हैं, new User(...) के माध्यम से सीधे इंस्टेंटिएट की जा सकती हैं।
ArrayObject
PHP SPL मानक पुस्तकालय की क्लास जो ArrayAccess जैसे इंटरफेस को implement करती है। इस टूल द्वारा ArrayObject स्टाइल में जनरेट की गई क्लास \ArrayObject से इनहेरिट करती हैं, एरे-स्टाइल और ऑब्जेक्ट-स्टाइल दोहरे एक्सेस दोनों को सपोर्ट करती हैं।
stdClass
PHP बिल्ट-इन जेनेरिक ऑब्जेक्ट क्लास; json_decode($json, false) डिफ़ॉल्ट रूप से यह टाइप रिटर्न करती है। इस टूल द्वारा stdClass स्टाइल में जनरेट की गई क्लास \stdClass से इनहेरिट करती हैं, केवल ऑब्जेक्ट-स्टाइल एक्सेस को सपोर्ट करती हैं।
typed properties
PHP 7.4+ में पेश की गई प्रॉपर्टी टाइप घोषणाएं (जैसे public int $id)। इस टूल द्वारा जनरेट की गई प्रॉपर्टी में डिफ़ॉल्ट रूप से टाइप घोषणाएं होती हैं; IDE और स्टैटिक एनालिसिस टूल सीधे टाइप चेकिंग कर सकते हैं।
readonly class
PHP 8.1+ में पेश की गई readonly क्लास; क्लास की सभी प्रॉपर्टी स्वचालित रूप से readonly हो जाती हैं, कंस्ट्रक्शन के बाद संशोधित नहीं की जा सकतीं। यह टूल readonly स्टाइल में final readonly class जेनरेट करता है, DTO अपरिवर्तनीय परिदृश्यों के लिए उपयुक्त।
JsonSerializable
PHP 5.4+ में पेश किया गया इंटरफ़ेस; इस इंटरफ़ेस को implement करने वाले ऑब्जेक्ट json_encode() कॉल होने पर स्वचालित रूप से jsonSerialize() मेथड कॉल करते हैं। इस टूल की सभी क्लास स्वचालित रूप से इस इंटरफ़ेस को implement करती हैं।
Jsonable (Laravel)
Laravel फ्रेमवर्क का कॉन्ट्रैक्ट इंटरफ़ेस; कार्यान्वयन के बाद, ऑब्जेक्ट JSON आउटपुट करने के लिए toJson() कॉल कर सकता है। इस टूल का Laravel इंटीग्रेशन स्टाइल स्वचालित रूप से इस इंटरफ़ेस को implement करता है।
Arrayable (Laravel)
Laravel फ्रेमवर्क का कॉन्ट्रैक्ट इंटरफ़ेस; कार्यान्वयन के बाद, ऑब्जेक्ट एरे आउटपुट करने के लिए toArray() कॉल कर सकता है। इस टूल का Laravel इंटीग्रेशन स्टाइल स्वचालित रूप से इस इंटरफ़ेस को implement करता है।
Composer
PHP आधिकारिक निर्भरता प्रबंधन टूल। इस टूल द्वारा जनरेट किए गए कोड का उपयोग करते समय, composer.json में PSR-4 autoload कॉन्फ़िगर करना आवश्यक है (जैसे App\\: src/)।
PSR-4
PHP-FIG द्वारा निर्दिष्ट Autoload मानक, namespace-से-डायरेक्ट्री मैपिंग के माध्यम से क्लास फ़ाइलें लोड करता है। इस टूल द्वारा जनरेट किया गया ZIP पैकेज namespace पाथ के अनुसार व्यवस्थित है, PSR-4 मानक के अनुरूप है।
Symfony Serializer
Symfony कंपोनेंट का सीरियलाइज़ेशन फ्रेमवर्क। इस टूल द्वारा ArrayObject स्टाइल में जनरेट की गई क्लास Symfony Serializer के PropertyNormalizer के साथ डीप सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए काम कर सकती हैं।
Eloquent API Resource
API रिस्पॉन्स फ़ॉर्मेट करने के लिए Laravel Eloquent API रिसोर्स क्लास। इस टूल द्वारा Laravel इंटीग्रेशन स्टाइल में जनरेट की गई क्लास सीधे API Resource बेस क्लास के रूप में उपयोग की जा सकती हैं।
composer.json
Composer प्रोजेक्ट की कॉन्फ़िगरेशन फ़ाइल। इस टूल द्वारा जनरेट किए गए कोड को src डायरेक्ट्री में रखने के बाद, composer.json में autoload सेक्शन कॉन्फ़िगर करना और composer dump-autoload निष्पादित करना आवश्यक है।
json_encode / json_decode
PHP बिल्ट-इन JSON सीरियलाइज़ेशन और डीसीरियलाइज़ेशन फ़ंक्शन। इस टूल द्वारा जनरेट की गई क्लास द्वारा JsonSerializable implement करने के बाद, json_encode() स्वचालित रूप से jsonSerialize() मेथड कॉल करती है।
PHPUnit DataProvider
PHPUnit टेस्टिंग फ्रेमवर्क का डेटा प्रदाता तंत्र। इस टूल द्वारा जनरेट की गई PHP क्लास DataProvider के रूप में टेस्ट केस में इंजेक्ट की जा सकती हैं, IDE ऑटोकम्प्लीट के साथ टेस्ट लेखन दक्षता में सुधार करती हैं।
PHPStan
PHP स्टैटिक एनालिसिस टूल, कोड पर टाइप चेकिंग और एरर डिटेक्शन कर सकती है। इस टूल द्वारा जनरेट की गई क्लास, typed properties होने के कारण, PHPStan --level=8 मोड में प्रॉपर्टी टाइप को पूरी तरह से इंफर कर सकती हैं।
Psalm
Vimeo द्वारा ओपन-सोर्स एक अन्य PHP स्टैटिक एनालिसिस टूल। इस टूल द्वारा जनरेट की गई क्लास Psalm के PropertyTypeProvider के साथ मजबूत टाइप वैलिडेशन कर सकती हैं।
Doctrine
PHP इकोसिस्टम में ORM और DBAL टूलसेट। इस टूल द्वारा जनरेट की गई PHP क्लास Doctrine Entity के लिए स्केलेटन के रूप में काम कर सकती हैं, फिर मैन्युअल रूप से #[ORM\Column] जैसे एनोटेशन जोड़ें।
php -l
PHP कमांड लाइन सिंटैक्स चेक निर्देश। इस टूल द्वारा जनरेट की गई क्लास को प्रोजेक्ट में require करने से पहले php -l User.php चलाकर सिंटैक्स वैलिडेशन किया जा सकता है।
Composer dump-autoload
Composer को autoload इंडेक्स पुन: उत्पन्न करने का कमांड। इस टूल द्वारा जनरेट की गई क्लास को src डायरेक्ट्री में रखने के बाद, PSR-4 autoload द्वारा पहचाने जाने के लिए composer dump-autoload निष्पादित करना अनिवार्य है।
JSON_THROW_ON_ERROR
PHP 7.3+ में json_decode() एरर हैंडलिंग फ़्लैग; सक्षम होने पर JSON पार्सिंग विफलता JsonException अपवाद फेंकती है। इस टूल का Laravel उदाहरण सख्त पार्सिंग का उपयोग करता है।
Hash (PHP)
PHP बिल्ट-इन हैश फ़ंक्शन, आमतौर पर WebHook सिग्नेचर वेरिफिकेशन के लिए उपयोग किया जाता है। इस टूल द्वारा जनरेट की गई WebHook कॉलबैक क्लास hash_hmac() के साथ सिग्नेचर वेरिफिकेशन के लिए काम करती हैं।

JSON टाइप से PHP टाइप मैपिंग चीट शीट

टूल द्वारा स्वचालित रूप से इंफर की गई JSON डेटा प्रकार और संबंधित PHP टाइप संदर्भ:

JSON वैल्यू उदाहरणडिटेक्शन विधिजनरेट किया गया PHP टाइपप्रॉपर्टी डिफ़ॉल्ट वैल्यू
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''
[...] (खाली एरे)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>)[]
{...} (नेस्टेड ऑब्जेक्ट)typeof value === 'object' && !Array.isArray(value)Xxx (स्वतंत्र क्लास)new Xxx()

PHP 4 कोड स्टाइल तुलना तालिका

टूल द्वारा समर्थित 4 PHP क्लास कोड स्टाइल; प्रोजेक्ट की आवश्यकताओं के अनुसार चुनें:

कोड स्टाइलविस्तार / संशोधककार्यान्वित इंटरफ़ेसउपयोग के मामले
ArrayObject स्टाइलextends \ArrayObjectimplements \JsonSerializableSymfony Serializer इकोसिस्टम, एरे-स्टाइल एक्सेस $obj['key'] की आवश्यकता, PHP stdlib संगतता
stdClass स्टाइलextends \stdClassimplements \JsonSerializableWordPress REST API, json_decode डिफ़ॉल्ट व्यवहार संगतता, हल्के ऑब्जेक्ट डेटा वाहक
readonly class स्टाइलfinal readonly class (कोई विरासत नहीं)implements \JsonSerializablePHP 8.1+, API रिस्पॉन्स DTO, अपरिवर्तनीय डेटा ट्रांसफर ऑब्जेक्ट, डेटा को कंस्ट्रक्शन के बाद संशोधित नहीं किए जाने की गारंटी
Laravel इंटीग्रेशन स्टाइलकोई विरासत नहीं (डिफ़ॉल्ट)implements \Jsonable, \Arrayable, \JsonSerializableLaravel Eloquent API Resource, Eloquent मॉडल लेयर, कंट्रोलर रिस्पॉन्स फ़ॉर्मेटिंग

Privacy & Security

इस JSON से PHP टूल के सभी JSON पार्सिंग, PHP क्लास जनरेशन, ZIP पैकेजिंग ऑपरेशन JavaScript (quicktype-core + JSZip) के माध्यम से पूरी तरह से आपके ब्राउज़र में स्थानीय रूप से पूर्ण होते हैं; इनपुट JSON डेटा और जनरेट किया गया PHP कोड कभी भी किसी सर्वर पर अपलोड नहीं होता, न ही रिकॉर्ड किया जाता है, कैश किया जाता है या क्लाउड में संग्रहीत किया जाता है। आंतरिक इंटरफ़ेस फ़ील्ड, अप्रकाशित व्यावसायिक संरचनाएं, अप्रकाशित API रिस्पॉन्स वाले संवेदनशील JSON सुरक्षित रूप से उपयोग किए जा सकते हैं; पेज बंद होने पर सभी डेटा साफ हो जाता है। यह टूल उपयोगकर्ता ट्रैकिंग के लिए किसी भी कुकी का उपयोग नहीं करता है, ईमेल या खाता जानकारी एकत्र नहीं करता है, किसी भी तृतीय-पक्ष एनालिटिक्स स्क्रिप्ट को एम्बेड नहीं करता है; सभी गणनाएं वर्तमान डिवाइस की ब्राउज़र प्रक्रिया में पूरी होती हैं। ऑफ़लाइन वातावरण में भी (जैसे डिस्कनेक्टेड या इंट्रानेट आइसोलेटेड वातावरण), जब तक पेज संसाधन एक बार लोड हो जाएं, सामान्य रूप से काम करता है।

Authoritative References