JSON से Go Struct

JSON को Go struct में बदलें: एक्सपोर्टेड फ़ील्ड नाम, json टैग, null के लिए पॉइंटर टाइप और वैकल्पिक omitempty के साथ। नेस्टेड ऑब्जेक्ट और ऐरे संभालता है। मुफ़्त।

नेस्टेड ऑब्जेक्ट अलग struct बनते हैं; nullable मान पॉइंटर इस्तेमाल करते हैं; पूर्णांक int64, दशमलव float64 और मिश्रित या केवल null मान any बनते हैं।

पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड नहीं होता।

संबंधित टूल्स

सभी देखें

JSON से Go Struct क्या है?

JSON नमूने से मुहावरेदार Go struct परिभाषाएँ बनाएँ। फ़ील्ड नाम Go initialism (ID, URL, API…) के साथ एक्सपोर्टेड PascalCase होते हैं, हर फ़ील्ड पर मूल कुंजी के साथ json:"…" टैग होता है, और नेस्टेड ऑब्जेक्ट अलग नामित struct बनते हैं।

JSON से Go Struct का उपयोग कैसे करें

  1. JSON इनपुट में JSON नमूना पेस्ट करें (या उदाहरण लोड करें / फ़ाइल खोलें दबाएँ)।
  2. रूट टाइप का नाम तय करें (डिफ़ॉल्ट Root)।
  3. वैकल्पिक और nullable फ़ील्ड में omitempty जोड़ें को रखें या हटाएँ।
  4. बना हुआ Go कोड कॉपी करें या फ़ाइल के रूप में डाउनलोड करें।

उदाहरण

इनपुट
{"id":1,"name":"A","tags":["x"]}
आउटपुट
type Root struct {
	ID   int64    `json:"id"`
	Name string   `json:"name"`
	Tags []string `json:"tags"`
}

JSON से Go Struct का उपयोग कब करें

encoding/json से API रिस्पॉन्स unmarshal करने के लिए इसका उपयोग करें। यह समय मानों या enum के लिए कस्टम टाइप नहीं बनाता; जहाँ उचित हो string को खुद time.Time में बदलें।

JSON से Go Struct कैसे काम करता है

नमूने को रिकर्सिव ढंग से पढ़ा जाता है और हर स्थान उन टाइप को इकट्ठा करता है जो उसने देखे। ऑब्जेक्ट के ऐरे एक टाइप में मिला दिए जाते हैं: जो कुंजी कुछ एलिमेंट में नहीं है वह वैकल्पिक बन जाती है, जो कुंजी कहीं null है वह nullable बन जाती है, दशमलव के साथ मिले पूर्णांक फ़्लोटिंग-पॉइंट टाइप बनते हैं, और बाकी हर मिश्रित टाइप डायनैमिक टाइप पर चला जाता है। नेस्टेड ऑब्जेक्ट अपने नामित टाइप बनते हैं (कुंजी का PascalCase, ऐरे कुंजियों का एकवचन: orders → Order), और नाम टकराने पर अंक जुड़ते हैं। Go आउटपुट पूर्णांक के लिए int64, दशमलव के लिए float64, string, bool, ऐरे के लिए slice, nullable मानों के लिए पॉइंटर (*T) और डायनैमिक या सिर्फ़-null मानों के लिए any इस्तेमाल करता है। कॉलम gofmt आउटपुट की तरह संरेखित होते हैं।

सामान्य उपयोग मामले

  • json.Unmarshal के लिए REST रिस्पॉन्स का मॉडल बनाना
  • JSON फ़ाइल से कॉन्फ़िग struct बनाना
  • Go माइक्रोसर्विस के DTO तेज़ी से लिखना
  • JSON और Go कोड के बीच फ़ील्ड नामकरण की तुलना करना

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

int की जगह int64 क्यों?

int64 का आकार हर प्लेटफ़ॉर्म पर तय है, जिससे बड़े ID के साथ ओवरफ़्लो की चौंकाने वाली स्थितियाँ नहीं आतीं। चाहें तो इसे int कर लें।

पॉइंटर कब इस्तेमाल होता है?

जब नमूने में किसी कुंजी के लिए null हो, तो फ़ील्ड *T बन जाता है ताकि गायब मान को शून्य मान से अलग पहचाना जा सके।

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

encoding/json marshal करते समय उस फ़ील्ड को छोड़ देता है जिसका मान शून्य हो। यह विकल्प इसे सिर्फ़ उन फ़ील्ड में जोड़ता है जो नमूने में वैकल्पिक या nullable हैं।

सुझाए गए अगले कदम

JSON फ़ॉर्मेटर
JSON को 2 स्पेस, 4 स्पेस या टैब से फ़ॉर्मेट करें, चाहें तो कुंजियाँ क्रम में लगाएँ और सिंटैक्स त्रुटि की सटीक पंक्ति व कॉलम पाएँ। ब्राउज़र में चलता है।
एस्केप/अनएस्केप टूल
JSON, JavaScript, HTML, XML, URL कंपोनेंट, रेगुलर एक्सप्रेशन, SQL लिटरल, CSS स्ट्रिंग और शेल आर्ग्युमेंट के लिए स्ट्रिंग एस्केप या अनएस्केप करने का एक ही टूल।
JSON मिनिफ़ायर
सारा गैर-ज़रूरी व्हाइटस्पेस हटाकर JSON मिनिफ़ाई करें; मान, कुंजी क्रम और बड़ी संख्याएँ सुरक्षित रहती हैं। बची हुई साइज़ दिखाता है। मुफ़्त और ब्राउज़र में।
JSON पाथ फ़ाइंडर
JSON दस्तावेज़ के हर पाथ को JSONPath, JavaScript या jq सिंटैक्स में सूचीबद्ध करें, पाथ पर क्लिक करके उसका मान देखें, या पाथ टाइप करके खोजें। ब्राउज़र में चलता है।
JSON Diff
दो JSON दस्तावेज़ों की संरचना के आधार पर तुलना करें: JSONPath के साथ जोड़े, हटाए और बदले गए मान देखें, कुंजी क्रम और फ़ॉर्मेटिंग की अनदेखी के साथ। मुफ़्त, ब्राउज़र में।
JSON Query (JSONPath)
JSONPath से JSON क्वेरी करें: वाइल्डकार्ड, रिकर्सिव डिसेंट, स्लाइस और [?(@.price < 10)] जैसे फ़िल्टर एक्सप्रेशन। टाइप करते ही नतीजे अपडेट होते हैं। jq सिंटैक्स नहीं।

और श्रेणियाँ देखें