क्या JSON नामकरण पर एक मानक है? मैं अंडरस्कोर (लोअरकेस) द्वारा अलग किए गए सभी निचले मामलों का उपयोग करके सबसे अधिक उदाहरण देखता हूं। लेकिन, क्या आप PascalCase या CamelCase का उपयोग कर सकते हैं?
क्या JSON नामकरण पर एक मानक है? मैं अंडरस्कोर (लोअरकेस) द्वारा अलग किए गए सभी निचले मामलों का उपयोग करके सबसे अधिक उदाहरण देखता हूं। लेकिन, क्या आप PascalCase या CamelCase का उपयोग कर सकते हैं?
जवाबों:
कोई मानक नहीं है, लेकिन मैंने आपके द्वारा उल्लिखित 3 शैलियों को देखा है ("पास्कल / माइक्रोसॉफ्ट", "जावा" ( camelCase
) और "सी" (अंडरस्कोर, snake_case
)) - साथ ही साथ कम से कम एक और, kebab-case
जैसेlonger-name
)।
यह ज्यादातर इस बात पर निर्भर करता है कि प्रश्न में सेवा के पृष्ठभूमि के डेवलपर्स क्या थे; c / c ++ बैकग्राउंड वाले (या ऐसी ही नामकरण को अपनाने वाली भाषाएँ, जिनमें कई स्क्रिप्टिंग भाषाएँ शामिल हैं, माणिक आदि) अक्सर अंडरस्कोर वैरिएंट चुनते हैं; और इसी तरह आराम करें (जावा बनाम .NET)। जैक्सन पुस्तकालय का उल्लेख किया गया था, उदाहरण के लिए, जावा बीन नामकरण सम्मेलन (camelCase
)
अद्यतन: "मानक" की मेरी परिभाषा एक एकल सम्मेलन है। इसलिए जब कोई दावा कर सकता है "हाँ, कई मानक हैं", मेरे लिए कई हैं Naming Conventions
, जिनमें से कोई भी "समग्र" मानक नहीं है। उनमें से एक को विशिष्ट प्लेटफ़ॉर्म के लिए मानक माना जा सकता है, लेकिन यह देखते हुए कि JSON का उपयोग उन प्लेटफार्मों के बीच अंतर के लिए किया जाता है जो बहुत समझदार हो सकते हैं या नहीं।
इस दस्तावेज़ में Google JSON स्टाइल गाइड (Google में JSON API के निर्माण के लिए अनुशंसाएँ),
यह अनुशंसा करता है कि:
प्रॉपर्टी के नाम ऊंटनी , ASCII तार होना चाहिए ।
पहला वर्ण एक अक्षर, एक अंडरस्कोर (_) या एक डॉलर चिह्न ($) होना चाहिए।
उदाहरण:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
मेरी टीम इस सम्मेलन का अनुसरण करती है।
Property Name Guidelines->Property Name Format->Choose meaningful property names.
।
JSON में कुंजियों का कोई मानक नामकरण नहीं है । ऑब्जेक्ट के अनुसार अनुभाग का नमूना:
JSON सिंटैक्स नाम के रूप में उपयोग किए जाने वाले स्ट्रिंग्स पर कोई प्रतिबंध नहीं लगाता है, ...
जिसका मतलब है कि कैमलकेस या स्नेक_केस ठीक काम करें।
एक JSON नामकरण सम्मेलन का आयोजन बहुत भ्रमित करने वाला है। हालांकि, यह आसानी से पता लगाया जा सकता है यदि आप इसे घटकों में तोड़ते हैं।
JSON उत्पन्न करने के लिए प्रोग्रामिंग भाषा
JSON में स्वयं कुंजियों का कोई मानक नामकरण नहीं है
JSON को पार्स करने के लिए प्रोग्रामिंग भाषा
snake_case अभी भी जावा प्रविष्टियों वाले लोगों के लिए समझ में आएगा क्योंकि जावा के लिए मौजूदा JSON लाइब्रेरी मानक dot.syntax का उपयोग करने के बजाय कुंजियों तक पहुँचने के लिए केवल विधियों का उपयोग कर रहे हैं । इसका मतलब है कि यह जावा का उपयोग करने के लिए है कि ज्यादा चोट नहीं होगा snake_cased अन्य प्रोग्रामिंग भाषा जो कर सकते हैं की तुलना में कुंजी dot.syntax ।
जावा के पैकेज के लिए उदाहरणorg.json
JsonObject.getString("snake_cased_key")
जावा के पैकेज के लिए उदाहरणcom.google.gson
JsonElement.getAsString("snake_cased_key")
अपने JSON कार्यान्वयन के लिए सही JSON नामकरण सम्मेलन का चयन करना आपकी प्रौद्योगिकी स्टैक पर निर्भर करता है। ऐसे मामले हैं जहां कोई साँप_केस , कैमलकेस का उपयोग कर सकता है , या किसी अन्य नामकरण सम्मेलन का ।
विचार करने के लिए एक और चीज JSON-जनरेटर बनाम JSON-parser और / या फ्रंट-एंड जावास्क्रिप्ट पर डाला जाने वाला वजन है। सामान्य तौर पर, JSON-parser पक्ष के बजाय JSON-जनरेटर पक्ष पर अधिक भार डाला जाना चाहिए। ऐसा इसलिए है क्योंकि व्यावसायिक तर्क आमतौर पर JSON-जनरेटर पक्ष पर रहता है।
इसके अलावा, यदि JSON-parser पक्ष अज्ञात है, तो आप घोषणा कर सकते हैं कि आपके लिए क्या काम कर सकता है।
"Person":
NodeJS पर मेरे लिए विशेष रूप से, अगर मैं डेटाबेस के साथ काम कर रहा हूं और मेरे क्षेत्र के नाम अंडरस्कोर अलग कर दिए गए हैं, तो मैं उन्हें संरचना कुंजियों में भी उपयोग करता हूं।
ऐसा इसलिए है क्योंकि db फ़ील्ड्स में बहुत से शब्दावलियाँ / संक्षिप्तीकरण हैं इसलिए appSNSInterfaceRRTest जैसा कुछ गड़बड़ दिखता है लेकिन app_sns_interface_rr_test अच्छा है।
जावास्क्रिप्ट वेरिएबल्स में सभी कैमकेलेज हैं और क्लास के नाम (कंस्ट्रक्टर) प्रॉपरकेस हैं, इसलिए आपको ऐसा कुछ दिखाई देगा
var devTask = {
task_id: 120,
store_id: 2118,
task_name: 'generalLedger'
};
या
generalLedgerTask = new GeneralLedgerTask( devTask );
और निश्चित रूप से JSON कुंजी / स्ट्रिंग्स को दोहरे उद्धरण चिह्नों में लपेटा जाता है, लेकिन तब आप सिर्फ JSON.stringify का उपयोग करते हैं और JS ऑब्जेक्ट्स में पास होते हैं, इसलिए इसके बारे में चिंता करने की आवश्यकता नहीं है।
जब तक मुझे JSON और JS नामकरण सम्मेलनों के बीच यह खुशहाल माध्यम नहीं मिला, मैं इससे थोड़ा संघर्ष करता रहा।
org.json
, जैसे जावा को पार्स करने के लिए gson
। स्नेक_केस डेटा को प्राप्त करने से इतना नुकसान नहीं होता ...JSONObject.get('snake_case_key_here')
ऐसा लगता है कि पर्याप्त भिन्नता है कि लोग सभी सम्मेलनों से दूसरों को रूपांतरण की अनुमति देने के लिए अपने रास्ते से बाहर जाते हैं: http://www.cowtowncoder.com/blog/archives/cat_json.html
उल्लेखनीय रूप से, उल्लेखित जैक्सन जेन्सन पार्सर पसंद करते हैं bean_naming
।
beanNaming
।
मुझे लगता है कि JSON में आधिकारिक नामकरण सम्मेलन नहीं है, लेकिन आप कुछ उद्योग के नेताओं का अनुसरण करके देख सकते हैं कि यह कैसे काम कर रहा है।
Google, जो दुनिया की सबसे बड़ी आईटी कंपनी में से एक है, में JSON शैली मार्गदर्शिका है: https://google.github.io/styleguide/jsoncstyleguide.xml
लाभ उठाते हुए, आप अन्य स्टाइल गाइड पा सकते हैं, जिन्हें Google परिभाषित करता है: https://github.com/google/styleguide
जैसा कि दूसरों ने कहा है कि कोई मानक नहीं है, इसलिए आपको स्वयं को चुनना चाहिए। ऐसा करते समय कुछ बातों पर विचार करना चाहिए:
यदि आप JSON का उपभोग करने के लिए जावास्क्रिप्ट का उपयोग कर रहे हैं, तो दोनों में गुणों के लिए एक ही नामकरण सम्मेलन का उपयोग करके दृश्य स्थिरता प्रदान करेगा और संभवत: क्लीनर कोड के पुन: उपयोग के लिए कुछ अवसर।
कबाब-मामले से बचने का एक छोटा कारण यह है कि हाइफ़न उन -
पात्रों के साथ नेत्रहीन रूप से टकरा सकते हैं जो मूल्यों में दिखाई देते हैं।
{
"bank-balance": -10
}