JSON से Go
अभी कोई सामग्री नहीं
JSON को बाईं ओर पेस्ट करें, दाईं ओर स्वचालित रूप से Go प्रोजेक्ट में सीधे उपयोग के लिए तैयार struct प्रकार परिभाषाएं जनरेट हो जाती हैं। शुद्ध ब्राउज़र स्थानीय प्रसंस्करण, कोई पंजीकरण या अपलोड आवश्यक नहीं।
अभी कोई सामग्री नहीं
JSON को बाईं ओर पेस्ट करें, दाईं ओर स्वचालित रूप से Go प्रोजेक्ट में सीधे उपयोग के लिए तैयार struct प्रकार परिभाषाएं जनरेट हो जाती हैं। शुद्ध ब्राउज़र स्थानीय प्रसंस्करण, कोई पंजीकरण या अपलोड आवश्यक नहीं।
JSON से Go JSON प्रारूप डेटा को स्वचालित रूप से Go भाषा struct प्रकार परिभाषा में बदलने की प्रक्रिया है। JSON REST API, कॉन्फ़िगरेशन फ़ाइलों, संदेश कतारों और लॉग में सबसे सामान्य डेटा विनिमय प्रारूप है, जबकि Go एक मजबूत-प्रकार की भाषा है, विकास में अक्सर JSON की गतिशील संरचना को struct में मैप करने की आवश्यकता होती है ताकि encoding/json के साथ डीसीरियलाइज़ेशन किया जा सके। विशेष रूप से नेस्टेड ऑब्जेक्ट्स के लिए हाथ से struct लिखना आसानी से फ़ील्ड छोड़ सकता है या गलत प्रकार लिख सकता है, यह टूल दोहराए जाने वाले काम को स्वचालित करने के लिए है।
Go का struct एक मिश्रित डेटा प्रकार है, जिसे `type Name struct { ... }` के साथ घोषित किया जाता है। प्रत्येक फ़ील्ड में एक नाम और एक प्रकार होता है, फ़ील्ड नाम को अन्य पैकेज द्वारा एक्सेस करने के लिए बड़े अक्षर से शुरू होना चाहिए, जिसे 'निर्यात योग्य पहचानकर्ता' कहा जाता है। टूल स्वचालित रूप से JSON फ़ील्ड नामों को PascalCase निर्यात फ़ील्ड नामों में बदल देगा, उदाहरण के लिए `user_name` `UserName` में मैप होगा, और मूल कुंजी को json टैग में रखेगा।
इस टूल का मुख्य रूपांतरण ब्राउज़र के अंदर jsonFormat Web Worker द्वारा पूरा किया जाता है, जो quicktype-core के Go रेंडरर को कॉल करता है और `just-types` और `no-comments` विकल्प पास करता है। पूरी प्रक्रिया बैकएंड सेवा पर निर्भर नहीं करती है: इनपुट JSON को स्थानीय रूप से पार्स किया जाता है, प्रकारों का अनुमान लगाया जाता है, Go कोड जनरेट किया जाता है, और अंत में दाईं ओर के एडिटर में प्रस्तुत किया जाता है।
प्रकार अनुमान JSON से Go के सामान्य मैपिंग का पालन करता है: स्ट्रिंग `string` में मैप होते हैं, बूलियन `bool` में, पूर्णांक `int64` में, फ़्लोटिंग-पॉइंट `float64` में, एरे स्लाइस `[]T` में, ऑब्जेक्ट स्वतंत्र struct में, `null` `interface{}` में। नेस्टेड ऑब्जेक्ट्स को पुनरावर्ती रूप से संसाधित किया जाएगा, पदानुक्रम संबंध स्पष्ट रखते हुए।
हाथ से लिखने की तुलना में, टूल द्वारा जनरेट किया गया कोड एक 'चलने योग्य प्रारंभिक मसौदा' है। डेवलपर्स को आमतौर पर केवल रूट प्रकार का नाम, पैकेज का नाम, फ़ील्ड प्रकार की सटीकता (जैसे int64 को int में बदलना) और पॉइंटर प्रकारों का उपयोग करना है या नहीं, थोड़ा समायोजित करने की आवश्यकता होती है, फिर वे वास्तविक Go प्रोजेक्ट में डाल सकते हैं। एक-क्लिक कॉपी और model.go डाउनलोड के साथ, एकीकरण और मॉडलिंग चरण में दोहराए जाने वाले काम को काफी कम किया जा सकता है।
टूल द्वारा जनरेट किए गए struct को प्रोजेक्ट में कॉपी करने के बाद, encoding/json के साथ API प्रतिक्रिया को सीधे डीसीरियलाइज़ कर सकते हैं।
package main
import (
"encoding/json"
"fmt"
)
// 以下代码由 GeekFormat JSON 转 Go 工具生成
type User struct {
ID int64 `json:"id"`
Name string `json:"name"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
}
func main() {
data := []byte(`{
"id": 1,
"name": "Alice",
"tags": ["admin", "dev"],
"address": {"city": "Beijing"}
}`)
var u User
if err := json.Unmarshal(data, &u); err != nil {
panic(err)
}
fmt.Println(u.Name, u.Address.City)
}यदि API के कुछ फ़ील्ड मौजूद नहीं हो सकते हैं, तो संबंधित फ़ील्ड को पॉइंटर प्रकार में बदल सकते हैं या omitempty टैग के साथ उपयोग कर सकते हैं।
package main
import "encoding/json"
// 手动将字段改为指针,缺失时值为 nil
type User struct {
ID *int64 `json:"id,omitempty"`
Name *string `json:"name,omitempty"`
Email *string `json:"email,omitempty"`
}
func main() {
data := []byte(`{"id": 1, "name": "Bob"}`)
var u User
json.Unmarshal(data, &u)
if u.Email == nil {
println("Email 字段缺失")
}
}JSON सामग्री को बाईं ओर इनपुट बॉक्स में पेस्ट करें, टूल 400ms के भीतर स्वचालित रूप से रूपांतरित हो जाएगा और दाईं ओर जनरेट किया गया Go struct प्रदर्शित करेगा। आप .json/.txt फ़ाइलें ड्रैग और ड्रॉप भी कर सकते हैं, या बिल्ट-इन डेटा लोड करने के लिए 'उदाहरण' पर क्लिक कर सकते हैं। रूपांतरण पूरा होने के बाद, model.go फ़ाइल को एक क्लिक से कॉपी या डाउनलोड कर सकते हैं।
हाँ। टूल quicktype-core पर आधारित Go कोड जनरेट करता है, और डिफ़ॉल्ट रूप से प्रत्येक struct फ़ील्ड में `json:"मूल_फ़ील्ड_नाम"` टैग होता है, जो encoding/json के Unmarshal/Marshal के साथ सीधे सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए सुविधाजनक है।
हाँ। JSON एरे तत्व प्रकारों के आधार पर संबंधित स्लाइस प्रकार जनरेट करेंगे, उदाहरण के लिए `["a","b"]` `[]string` जनरेट करता है, `[1,2,3]` `[]int64` जनरेट करता है, `[{...},{...}]` `[]UserItem` जैसे कस्टम प्रकार जनरेट करता है।
हाँ। प्रत्येक नेस्टेड ऑब्जेक्ट पुनरावर्ती रूप से एक स्वतंत्र struct प्रकार जनरेट करता है, जिसका नाम PascalCase में होता है। उदाहरण के लिए, `address` ऑब्जेक्ट `Address` struct जनरेट करता है, मुख्य struct में `Address Address` फ़ील्ड के माध्यम से संदर्भित किया जाता है।
JSON में null मान आमतौर पर `interface{}` के रूप में अनुमानित किए जाते हैं, जो सुरक्षित फ़ॉलबैक प्रकार है। यदि आप फ़ील्ड के वास्तविक प्रकार को जानते हैं, तो JSON में एक उदाहरण मान जोड़ें, पुनः जनरेट करें, फिर मैन्युअल रूप से विशिष्ट प्रकार में समायोजित करें।
हाँ। टूल डिफ़ॉल्ट रूप से रूट प्रकार नाम (जैसे User) का उपयोग करता है; सेटिंग्स में रूट प्रकार नाम को संशोधित करने के बाद, सभी संबंधित उप-प्रकार के नाम समकालिक रूप से अपडेट हो जाएंगे, डाउनलोड की गई फ़ाइल का नाम भी तदनुसार बदल जाएगा।
टूल स्वचालित रूप से JSON वैधता का पता लगाता है। यदि ट्रेलिंग अल्पविराम, सिंगल कोट्स, लापता कोट्स जैसी सामान्य त्रुटियां मौजूद हैं, तो 'JSON मरम्मत करें' बटन दिखाई देगा। क्लिक करने पर, टूल स्वचालित मरम्मत का प्रयास करेगा और Go struct पुनः जनरेट करेगा; मरम्मत विफल होने पर विशिष्ट त्रुटि स्थान इंगित किया जाएगा।
नहीं। सभी JSON पार्सिंग, प्रकार अनुमान और Go कोड जनरेशन आपके ब्राउज़र में Web Worker के माध्यम से पूरा होता है; इनपुट सामग्री और जनरेट किया गया कोड कभी भी किसी सर्वर पर अपलोड नहीं किया जाता या क्लाउड में रिकॉर्ड नहीं किया जाता। API कुंजियों, टोकन या व्यावसायिक डेटा वाले संवेदनशील JSON का सुरक्षित रूप से उपयोग किया जा सकता है।
हाँ। जनरेट किया गया कोड json टैग के साथ मानक Go struct है, सीधे प्रोजेक्ट के types/ या models/ निर्देशिका में कॉपी किया जा सकता है। हम प्रोजेक्ट नामकरण सम्मेलनों के अनुसार प्रकार के नाम और पैकेज के नाम को थोड़ा समायोजित करने की सलाह देते हैं।
पूरी तरह से मुफ्त, कोई पंजीकरण या लॉगिन आवश्यक नहीं। पेज खोलें और तुरंत उपयोग करें, कोई कार्यक्षमता सीमाएं, वॉटरमार्क या जबरन लॉगिन नहीं।
टूल की कोई सख्त फ़ाइल आकार सीमा नहीं है, लेकिन रूपांतरण गति और रेंडरिंग प्रदर्शन ब्राउज़र और डिवाइस प्रदर्शन पर निर्भर करता है। हम सर्वोत्तम अनुभव के लिए 1MB के भीतर JSON संसाधित करने की सलाह देते हैं; अत्यधिक बड़े JSON के लिए पहले JSON फ़ॉर्मेटर या स्प्लिट टूल से संसाधित करें।
नहीं। टूल पूर्णांक और फ़्लोटिंग-पॉइंट संख्याओं को अलग करता है: पूर्णांक फ़ील्ड int64 जनरेट करते हैं, फ़्लोटिंग-पॉइंट फ़ील्ड float64 जनरेट करते हैं। यदि आप int, uint64 जैसे अधिक विशिष्ट प्रकार पसंद करते हैं, तो जनरेशन के बाद मैन्युअल रूप से बदलें।
बाईं ओर इनपुट बॉक्स खाली है या केवल रिक्त स्थान हैं। कृपया मान्य JSON पेस्ट करें, या डेटा लोड करने के लिए 'उदाहरण' पर क्लिक करें, या .json/.txt फ़ाइलें ड्रैग और ड्रॉप करें।
इनपुट बॉक्स के नीचे 'JSON मरम्मत करें' बटन पर क्लिक करें, टूल स्वचालित रूप से ट्रेलिंग अल्पविराम, सिंगल कोट्स, लापता कोट्स, JS-शैली ऑब्जेक्ट आदि समस्याओं को ठीक करने का प्रयास करेगा। मरम्मत के बाद संशोधित परिणाम हाइलाइट किया जाएगा।
टूल JSON key के अनुसार PascalCase फ़ील्ड नाम जनरेट करता है। यदि key में चीनी या विशेष वर्ण शामिल हैं, तो एस्केप किए गए फ़ील्ड नाम जनरेट हो सकते हैं। JSON key को अंग्रेजी लोअरकेस या snake_case में बदलने की सलाह दी जाती है, जनरेशन के बाद समान रूप से समायोजित करें।
चूंकि null विशिष्ट प्रकार का अनुमान नहीं लगा सकता है, टूल interface{} का उपयोग फ़ॉलबैक के रूप में करता है। आप स्रोत JSON में उस फ़ील्ड को एक उदाहरण मान (जैसे "" या 0) दे सकते हैं, पुनः जनरेट करने के बाद प्रकार को string/int64 आदि वास्तविक प्रकार में बदल सकते हैं।
अत्यधिक बड़े JSON और कई struct का ब्राउज़र रेंडरिंग अधिक मेमोरी की खपत करता है। सुझाव: ① केवल महत्वपूर्ण फ़ील्ड वाला उदाहरण JSON रखें; ② कई ऑब्जेक्ट में विभाजित करके अलग-अलग रूपांतरित करें; ③ पेज के अन्य मेमोरी-खपत वाले टैब बंद करें।
जब एरे खाली [] है या तत्व प्रकार असंगत हैं, तो टूल interface{} का उपयोग फ़ॉलबैक के रूप में करेगा। समान प्रकार के उदाहरण तत्व जोड़ सकते हैं, या जनरेशन के बाद मैन्युअल रूप से प्रकार को []string, []int64 आदि विशिष्ट स्लाइस प्रकार में बदल सकते हैं।
यह टूल JSON मान के प्रकार के आधार पर स्वचालित रूप से संबंधित Go प्रकार का अनुमान लगाता है, सामान्य मैपिंग संबंध निम्नानुसार हैं:
| JSON मान उदाहरण | जनरेट किया गया Go प्रकार | विवरण |
|---|---|---|
"hello" | string | स्ट्रिंग सीधे मैप |
true / false | bool | बूलियन मान |
42 | int64 | दशमलव बिंदु के बिना संख्या |
3.14 | float64 | दशमलव बिंदु वाली संख्या |
null | interface{} | विशिष्ट प्रकार का अनुमान नहीं लगा पाने पर सुरक्षित फ़ॉलबैक |
["a","b"] | []string | स्ट्रिंग एरे |
[1,2,3] | []int64 | पूर्णांक एरे |
[{...},{...}] | []UserItem | ऑब्जेक्ट एरे, तत्व प्रकार पुनरावर्ती रूप से जनरेट |
{"id":1} | User | ऑब्जेक्ट स्वतंत्र struct जनरेट करता है |
टूल डिफ़ॉल्ट रूप से int64 और float64 का उपयोग करता है, वास्तविक प्रोजेक्ट में आवश्यकतानुसार समायोजित किया जा सकता है:
| परिदृश्य | अनुशंसित प्रकार | कारण |
|---|---|---|
| सामान्य पूर्णांक ID, गिनती | int64 | टूल डिफ़ॉल्ट के अनुरूप, अधिकांश JSON संख्याओं के साथ संगत |
| डेटाबेस स्वतः वृद्धि प्राथमिक कुंजी सकारात्मक ज्ञात | uint64 | ऋणात्मक संख्याओं से बचें, शब्दार्थ स्पष्ट |
| 32-बिट सिस्टम या स्पष्ट छोटी सीमा पूर्णांक | int32 | मेमोरी उपयोग कम करें |
| मूल्य, अक्षांश/देशांतर, वैज्ञानिक गणना | float64 | टूल डिफ़ॉल्ट के अनुरूप, मानक फ़्लोटिंग-पॉइंट सटीकता |
| सटीक मुद्रा गणना | decimal.Decimal / int | float64 में सटीकता जोखिम है, shopspring/decimal या सेंट-इकाई int का उपयोग करने की सलाह दी जाती है |
इस JSON से Go टूल की सभी प्रक्रिया पूरी तरह से आपके ब्राउज़र में स्थानीय रूप से पूरी होती है: JSON पार्सिंग, प्रकार अनुमान, Go कोड जनरेशन सभी Web Worker के माध्यम से क्लाइंट-साइड पर निष्पादित होते हैं, इनपुट JSON सामग्री, अपलोड की गई फ़ाइलें और जनरेट किया गया Go कोड किसी भी सर्वर पर अपलोड नहीं किया जाता, न ही क्लाउड में रिकॉर्ड, कैश या संग्रहीत किया जाता है। पेज बंद करने या रीफ्रेश करने के बाद, सभी इनपुट और आउटपुट सामग्री स्वचालित रूप से मेमोरी से साफ हो जाती है, केवल localStorage आपके हाल के इनपुट इतिहास को बनाए रखेगा (किसी भी समय साफ किया जा सकता है)। API कुंजियों, टोकन, संवेदनशील व्यावसायिक डेटा वाले JSON को संसाधित करने के लिए उपयुक्त।