DevToolPal
हि

JSON से Go Struct

JSON नमूने से json टैग वाले Go struct बनाएँ, नामित या इनलाइन नेस्टेड struct और omitempty के साथ।

लोकल रूप से चलता है, कभी अपलोड नहीं होता

विकल्प

नेस्टेड ऑब्जेक्ट

JSON

0 कैरेक्टर · 0 B

Go

0 कैरेक्टर · 0 B

यह क्या करता है

JSON से Go कन्वर्टर एक JSON नमूना पढ़कर json टैग वाली Go struct परिभाषाएँ लिखता है, जो encoding/json के लिए तैयार होती हैं। जिस API को आप कॉल करते हैं उसका रिस्पॉन्स पेस्ट करें और ऐसे टाइप पाएँ जिन्हें तुरंत json.Unmarshal के साथ इस्तेमाल कर सकें, हर फ़ील्ड और टैग हाथ से लिखे बिना।

कन्वर्टर नमूने के हर मान को जाँचता है। नेस्टेड ऑब्जेक्ट अपने struct बनते हैं, ऐरे के सभी आइटम एक एलिमेंट टाइप में मिलाए जाते हैं, और जो फ़ील्ड कुछ आइटम में नहीं हैं या कभी-कभी null होते हैं उन्हें वैकल्पिक पहचाना जाता है। आउटपुट वैसे ही संरेखित होता है जैसे gofmt करता।

इस्तेमाल कैसे करें

  1. JSON को इनपुट में पेस्ट करें, .json फ़ाइल अपलोड करें या उदाहरण पर क्लिक करें।
  2. रूट टाइप का नाम तय करें और चुनें कि नेस्टेड ऑब्जेक्ट कैसे लिखे जाएँ, किन फ़ील्ड को omitempty मिले, और null हो सकने वाले फ़ील्ड पॉइंटर इस्तेमाल करें या नहीं।
  3. Go कोड कॉपी करें या .go फ़ाइल के रूप में डाउनलोड करें, फिर अपनी package लाइन जोड़ें।

गलत JSON होने पर समस्या की लाइन और कॉलम बताया जाता है।

उदाहरण

यह JSON:

{ "id": 7, "user_name": "ada", "tags": ["admin"], "profile": { "avatar_url": "https://example.com/a.png" } }

इन struct में बदल जाता है:

type Root struct {
	ID       int      `json:"id"`
	UserName string   `json:"user_name"`
	Tags     []string `json:"tags"`
	Profile  Profile  `json:"profile"`
}

type Profile struct {
	AvatarURL string `json:"avatar_url"`
}

सुझाव

  • एक नमूना वही दिखाता है जो उसमें है। अगर कोई मान संख्या या स्ट्रिंग हो सकता है, तो दोनों शामिल करें या कई नमूनों को एक ऐरे में रखें ताकि वे मिल जाएँ।
  • टाइमस्टैम्प स्ट्रिंग के रूप में आते हैं। फ़ॉर्मेट RFC 3339 हो तो टाइप को खुद time.Time में बदलें।
  • बिल्कुल एक जैसे फ़ील्ड वाले ऑब्जेक्ट एक ही struct साझा करते हैं, इसलिए एक ही आकार कई जगह आने पर भी आउटपुट छोटा रहता है।
  • TypeScript भी लिखते हैं? JSON से TypeScript जनरेटर उसी अनुमान से इंटरफ़ेस बनाता है।

अक्सर पूछे जाने वाले सवाल

› फ़ील्ड के नाम कैसे चुने जाते हैं?

हर JSON कुंजी PascalCase में एक्सपोर्ट किए गए Go नाम में बदलती है, और आम संक्षिप्त रूप golint की अपेक्षा के अनुसार बड़े अक्षरों में लिखे जाते हैं, इसलिए user_id बनता है UserID और avatar_url बनता है AvatarURL। मूल कुंजी json टैग में बनी रहती है, जिससे encoding/json फ़ील्ड को सटीक रूप से जोड़ता है।

› कौन-से Go टाइप इस्तेमाल होते हैं?

स्ट्रिंग string बनती है, पूर्णांक int (या int64 जब कोई मान 32 बिट में न समाए), दशमलव float64 और बूलियन bool। ऐरे slice बनती हैं, खाली ऑब्जेक्ट map[string]any, और जो मान सिर्फ़ null हों या कई तरह के मिले-जुले हों वे any बनते हैं।

› नामित और इनलाइन struct में क्या अंतर है?

नामित मोड हर नेस्टेड ऑब्जेक्ट को Address या Order जैसा अलग टाइप लिखता है, जिसे दोबारा इस्तेमाल और टेस्ट करना आसान होता है। इनलाइन मोड बिना नाम वाले struct टाइप सीधे पैरेंट के अंदर रखता है और सब कुछ एक ही घोषणा में रखता है, जैसा कई तेज़ कन्वर्टर करते हैं।

› omitempty कब जोड़ा जाता है?

डिफ़ॉल्ट रूप से सिर्फ़ वैकल्पिक फ़ील्ड में, यानी जो फ़ील्ड ऐरे के कुछ ऑब्जेक्ट में नहीं हैं या कभी-कभी null होते हैं। आप इसे सभी फ़ील्ड में या किसी में भी न जोड़ने का विकल्प चुन सकते हैं। गायब या null मान को शून्य मान से अलग करने के लिए पॉइंटर चालू करें।

› क्या मेरा JSON अपलोड होता है?

नहीं। struct आपके ब्राउज़र में बनते हैं और कुछ भी सर्वर पर नहीं भेजा जाता।