জেএসওএন নামকরণ কনভেনশন [বন্ধ]


379

জেএসওন নামকরণের কোনও মান আছে? আন্ডারস্কোর (লোয়ার_সেস) দ্বারা বিচ্ছিন্ন সমস্ত লোয়ার কেস ব্যবহার করে আমি বেশিরভাগ উদাহরণ দেখতে পাচ্ছি। তবে, আপনি কি পাস্কেলকেস বা উটকেস ব্যবহার করতে পারেন?


12
আমি কৌতূহল ছিলাম কিছু শিল্প নেতা যা বেছে নিয়েছিলেন। মাইক্রোসফ্ট এবং গুগল ক্যামেলকেস ব্যবহার করার সময় টুইটার এবং ফেসবুক এপিআইয়ের ব্যবহার স্নাপকেস।
জাস্টিন

2
@ জাস্টিন এর কারণ টুইটার রুবি ব্যবহার করছে এবং ফেসবুক পিএইচপি ব্যবহার করছে। রুবি এবং পিএইচপি স্নাপকেসে আছে। মাইক্রোসফ্ট এবং গুগল যথাক্রমে সি /। নেট এবং জাভা ব্যবহার করছে। ওহ, ঠিক আছে। নেট এবং জাভা সম্ভবত উট কেসে পড়বে। এটি সমস্ত প্রোগ্রামিং ভাষার সম্মেলনের বিষয়ে
আবেল ক্লেলেজো

1
কোনও মান নেই, তবে কনভেনশনটি প্রাপ্তি ব্যবস্থার প্রযুক্তির মান ব্যবহার করার জন্য বলে মনে হচ্ছে।
হেসেলের মার্টিন

1
সব ঠিক আছে জেএসএনে নাম / কীগুলির জন্য কোনও কঠোর সম্মেলন নেই। যদিও, আমি কাবাব-কেস এড়াতে অত্যন্ত পরামর্শ দিচ্ছি কারণ এটি জাভাস্ক্রিপ্টে বিন্দু (।) স্বরলিপি দ্বারা অ্যাক্সেস করা যায় না এবং অ্যারে [] স্বরলিপি ব্যবহার করে অ্যাক্সেস করতে হবে যা আমি মনে করি এটি ক্লান্তিকর।
সৌরভ

2
প্রাথমিকভাবে মতামত ভিত্তিক হিসাবে বন্ধ? ওপি কারও মতামতের জন্য নয়, ফরম্যাটের ক্ষমতা / সীমাবদ্ধতা সম্পর্কিত তথ্য চেয়েছিল। তিনি বলেছিলেন "আপনি কি" না, "আপনার উচিত" নয়। সম্ভবত এই পাঁচ ব্যক্তির পক্ষে ওপি স্পষ্টভাবে যথেষ্ট শব্দটি ব্যবহার করেন নি, তবে তিনি কী জিজ্ঞাসা করছেন তা বুঝতে না পারার জন্য আপনার কাছে পড়ার মতো খারাপ বোধগম্যতা থাকতে হবে।
ডায়নামিকেল

উত্তর:


251

এখানে একটি আদর্শ মান নেই, তবে আমি আপনার উল্লেখ করা 3 টি শৈলী দেখেছি ("পাস্কাল / মাইক্রোসফ্ট", "জাভা" ( camelCase) এবং "সি" (আন্ডারস্কোর, snake_case)) - পাশাপাশি কমপক্ষে আরও একটি, kebab-caseপছন্দ করুন longer-name)।

এটি বেশিরভাগই পরিষেবাটিতে ব্যাকগ্রাউন্ড বিকাশকারীদের কীসের উপর নির্ভর করে বলে মনে হয়; সি / সি ++ ব্যাকগ্রাউন্ডযুক্ত (বা যে ভাষাগুলি একই নামকরণ গ্রহণ করে, যার মধ্যে অনেকগুলি স্ক্রিপ্টিং ভাষা, রুবি ইত্যাদি রয়েছে) প্রায়শই আন্ডারস্কোর বৈকল্পিক চয়ন করে; এবং একইভাবে বিশ্রাম করুন (জাভা বনাম। নেট)। উদাহরণস্বরূপ জ্যাকসন গ্রন্থাগারটি জাভা শিমের নামকরণ কনভেনশন ধরে নিল ( camelCase)

আপডেট: আমার "স্ট্যান্ডার্ড" সংজ্ঞাটি একটি একক সম্মেলন। সুতরাং যখন কেউ "হ্যাঁ, অনেকগুলি মান আছে" দাবি করতে পারে তবে আমার কাছে একাধিক রয়েছে Naming Conventions, যার একটিও সামগ্রিকভাবে "দ্যা" স্ট্যান্ডার্ড নয়। এর মধ্যে একটি নির্দিষ্ট প্ল্যাটফর্মের জন্য স্ট্যান্ডার্ড হিসাবে বিবেচনা করা যেতে পারে, তবে জেএসওএন প্ল্যাটফর্মগুলির মধ্যে আন্তঃব্যবহারের জন্য ব্যবহৃত হয় যা খুব বেশি অর্থবোধ করতে পারে বা নাও পারে।


4
ডিভসের পটভূমিতে স্টিকিং গুরুত্বপূর্ণ, তবে জেএসএন জাভাস্ক্রিপ্ট স্ট্যান্ডার্ডের সাথে লেগে থাকে। আপনার প্রথম বিবৃতিটি বেশ সঠিক নয়। তবে অবশ্যই আপনার দলের নামকরণের কনভেনশনগুলিতে লেগে থাকুন।
অনুবিয়ান নুব

8
কিছু পরিসংখ্যান দেখতে আকর্ষণীয় হবে, যেহেতু যারা JSON এবং জাভাস্ক্রিপ্টের মধ্যে সংযোগ দাবি করে (কেবল historicalতিহাসিক heritageতিহ্যের বাইরে) এবং যারা মনে করেন যে JSON কে জাভাস্ক্রিপ্টের সাথে সংযুক্ত করেছে তাদের মধ্যে অবিচ্ছিন্ন ঘর্ষণ রয়েছে। আমি পরের শিবিরের। তবে আমি আপেক্ষিক ব্যবহারের ধরণগুলি জানতে আগ্রহী হব।
স্টেক্সম্যান

@ স্ট্যাক্সম্যান সি # বেশিরভাগ ক্ষেত্রে প্যাসকেলকেস ব্যবহার করে, উটকেস ব্যবহার করে না।
আর্টঅফকোড

@ আর্টঅফকোড হ্যাঁ তোমার যুক্তি কী? (এছাড়াও,
পাস্কেল

@ স্ট্যাকসম্যান আপনি কীভাবে গুগলস স্টাইল গাইড
গ্যারেটম্যাক

402

এই দস্তাবেজে গুগল জেএসএন স্টাইল গাইড (গুগলে জেএসএন এপিআই তৈরির জন্য সুপারিশ),

এটি সুপারিশ করে যে:

  1. সম্পত্তির নাম অবশ্যই উট কেসড , এএসসিআইআই স্ট্রিং থাকতে হবে ।

  2. প্রথম অক্ষরটি অবশ্যই একটি অক্ষর, আন্ডারস্কোর (_) বা ডলার চিহ্ন ($) হতে হবে।

উদাহরণ:

{
  "thisPropertyIsAnIdentifier": "identifier value"
}

আমার দল এই সম্মেলনটি অনুসরণ করে।


8
স্পষ্টতই গুগল নির্দেশিকাগুলি পরিবর্তন করেছে, উটের মামলার সন্ধান বা চিঠি দিয়ে শুরু করার মতো কিছুই নেই, _ বা the আর নথিতে ...
দ্য ইয়ে

32
@ আইই এখনও আছে, আপনার কেবল ড্রপ ডাউন ক্লিক করতে হবে।
gdw2

5
গুড আই, @ জিডিডাব্লু 2। ভবিষ্যতে অন্যান্য লোকদের জন্য, যদি আপনি এটির তীর বোতামটি ক্লিক করেন Property Name Guidelines->Property Name Format->Choose meaningful property names.
পানজারিসারিসিস

3
কেউ ব্যাখ্যা করতে পারবেন কেন এবং কখন আপনি কোনও সম্পত্তির নামের উপসর্গের জন্য আন্ডারস্কোর ব্যবহার করবেন? একটি উল্লেখ কেবলমাত্র একটি মতামত নয়, দরকারী হবে useful
শন গ্লোভার

4
গুগলের উদ্ধৃতি দেওয়া কোনও উত্তম উত্তর নয়। তারা কেবল একটি নির্দিষ্ট সম্মেলন / গাইডলাইন সমর্থন করে এবং এটি জাভা বোধগম্য বলে মনে হচ্ছে কারণ তারা বেশ জবামুখী।
টমাস আন্দ্রে ওয়াং

185

প্রতিজ্ঞা

নেই তাদেরকে JSON মধ্যে কি কোন মান নামকরণঅনুমানের অবজেক্টস বিভাগ অনুসারে :

JSON সিনট্যাক্স নাম হিসাবে ব্যবহৃত স্ট্রিংগুলিতে কোনও বিধিনিষেধ আরোপ করে না ...

যার অর্থ উট কেস বা সাপ_কেস ভাল কাজ করা উচিত।

ড্রাইভিং কারণ

একটি JSON নামকরণ কনভেনশন চাপিয়ে দেওয়া খুব বিভ্রান্তিকর। যাইহোক, আপনি যদি এটি উপাদানগুলিতে বিভক্ত করেন তবে সহজেই এটি নির্ণয় করা যায়।

  1. জেএসএন উত্পন্ন করার জন্য প্রোগ্রামিং ভাষা

    • পাইথন - সর্প_কক্ষ
    • পিএইচপি - সাপ_কেস
    • জাভা - উট কেস
    • জাভাস্ক্রিপ্ট - উট কেস
  2. জেএসএনে নিজেই কীগুলির কোনও মানক নামকরণ নেই

  3. JSON পার্স করার জন্য প্রোগ্রামিং ভাষা

    • পাইথন - সর্প_কক্ষ
    • পিএইচপি - সাপ_কেস
    • জাভা - উট কেস
    • জাভাস্ক্রিপ্ট - উট কেস

উপাদানগুলি মিশ্রিত করুন

  1. পাইথন »জেএসওএন» পাইথন - সর্প_কেস - সর্বসম্মত
  2. পাইথন »জেএসওএন» পিএইচপি - স্নেপ_ক্যাস - সর্বসম্মত
  3. পাইথন »JSON» জাভা - স্নেপকেস - দয়া করে নীচে জাভা সমস্যাটি দেখুন
  4. পাইথন »জেএসওএন» জাভাস্ক্রিপ্ট - সর্প_কেস অর্থ দেবে; যাইহোক সামনের প্রান্ত স্ক্রু
  5. পাইথন »জেএসওএন» আপনি জানেন না - সাপ_ কেসটি বোঝায়; যাইহোক পার্সার স্ক্রু
  6. পিএইচপি »জেএসওএন» পাইথন - সর্প_কেস - সর্বসম্মত
  7. পিএইচপি »JSON» পিএইচপি - স্নেপ_সক - সর্বসম্মত
  8. পিএইচপি »JSON» জাভা - স্নেপकेস - দয়া করে নীচে জাভা সমস্যা দেখুন
  9. পিএইচপি » জেএসএন » জাভাস্ক্রিপ্ট - সর্প_কেস অর্থ দেবে; যাইহোক সামনের প্রান্ত স্ক্রু
  10. পিএইচপি »জেএসওএন snake আপনি জানেন না - স্নেপ_জ্যাক্সটি বোঝায়; যাইহোক পার্সার স্ক্রু
  11. জাভা »JSON» পাইথন - স্নেপকেস - দয়া করে নীচে জাভা সমস্যা দেখুন
  12. জাভা »JSON» পিএইচপি - স্নেপকেস - দয়া করে নীচে জাভা সমস্যা দেখুন
  13. জাভা »JSON» জাভা - উট কেস - সর্বসম্মত
  14. জাভা »JSON» জাভাস্ক্রিপ্ট - উট কেস - সর্বসম্মত
  15. জাভা »JSON» আপনি জানেন না - উটকেস অর্থ দেবে; যাইহোক পার্সার স্ক্রু
  16. জাভাস্ক্রিপ্ট »JSON» পাইথন - সর্প_ কেসটি বোঝায়; যাইহোক সামনের প্রান্ত স্ক্রু
  17. জাভাস্ক্রিপ্ট »JSON» পিএইচপি - সাপ_কেসটি বোঝায়; যাইহোক সামনের প্রান্ত স্ক্রু
  18. জাভাস্ক্রিপ্ট »JSON» জাভা - উট কেস - সর্বসম্মত
  19. জাভাস্ক্রিপ্ট »JSON» জাভাস্ক্রিপ্ট - উট কেস - আসল

জাভা সমস্যা

জাভা প্রবেশকারীদের সাথে স্নাপকেস এখনও তাত্পর্যপূর্ণ হবে কারণ জাভা জন্য বিদ্যমান জেএসএন লাইব্রেরিগুলি স্ট্যান্ডার্ড ডট.সাইনট্যাক্স ব্যবহার না করে কীগুলি অ্যাক্সেস করার জন্য কেবলমাত্র পদ্ধতি ব্যবহার করছে । এর অর্থ এটি যে অন্যান্য প্রোগ্রামিং ভাষার সাথে ডট.সাইনট্যাক্স করতে পারে তার তুলনায় জাভা সর্পযুক্ত কীগুলি অ্যাক্সেস করতে খুব বেশি ক্ষতি করবে না ।

জাভা প্যাকেজ জন্য উদাহরণorg.json

JsonObject.getString("snake_cased_key")

জাভা প্যাকেজ জন্য উদাহরণcom.google.gson

JsonElement.getAsString("snake_cased_key")

কিছু বাস্তব বাস্তবায়ন

উপসংহার

আপনার JSON বাস্তবায়নের জন্য সঠিক JSON নামকরণ কনভেনশন চয়ন করা আপনার প্রযুক্তি স্ট্যাকের উপর নির্ভর করে। এমন কেস রয়েছে যেখানে কেউ স্নাপকেস , উট কেস বা অন্য কোনও নামকরণ কনভেনশন ব্যবহার করতে পারে ।

আরেকটি বিষয় বিবেচনা করার জন্য হ'ল JSON- জেনারেটর বনাম JSON- পার্সার এবং / অথবা ফ্রন্ট-এন্ড জাভাস্ক্রিপ্টের ওজন রাখতে হবে। সাধারণভাবে, বেশি ওজন জেএসএন-পার্সার পার্শ্বের চেয়ে জেএসএন-জেনারেটরের দিকে লাগানো উচিত। এটি কারণ ব্যবসায়িক যুক্তি সাধারণত JSON- জেনারেটরের দিকে থাকে।

এছাড়াও, যদি JSON- পার্সার দিকটি অজানা থাকে তবে আপনি কখনই আপনার পক্ষে কাজ করতে পারে তা আপনি ঘোষণা করতে পারেন।


2
"Person":উট কেস নয় :)
স্টोফ

1
@ মজাদার কারণ সম্ভবত তারা স্কিমা.আর.গ. এর সম্মেলন অনুসরণ করেছিল followed মূল অক্ষর দিয়ে কীটি শুরু করার অর্থ এটি শব্দভান্ডার সত্তা। ছোট হাতের অক্ষর দিয়ে কীটি শুরু করার অর্থ এটি একটি ভোকাবুলারি সম্পত্তি।
আবেল কালেজো

2
আমি এই ধারণাগুলির সাথে একমত নই, কেবলমাত্র পাইথন ব্যাকএন্ড> জাভা ফ্রন্টএন্ডটি উটকেস হওয়া উচিত, তবে তারপরে আপনি পাইথন ফ্রন্টএন্ড যুক্ত করেন এবং আপনি ব্যাকএন্ড এবং একটি সম্মুখভাগে আপস করেছেন। "মানদণ্ড" অনুসারে এটি কীভাবে ব্যাকএন্ডে থাকবে তা হওয়া উচিত। সামনের পার্সারদের যেকোন উপায়ে মানিয়ে নেওয়া সহজ হয়েছে
বোজন কোগোজ

2
এখানে আমার উদ্বেগটি হ'ল "আপনার প্রযুক্তি" স্ট্যাকের উল্লেখ রয়েছে। জেএসএনের একটি প্রযোজক বিশেষত যদি এইচটিটিপি সার্ভার দ্বারা পরিবেশন করা হয় তবে কে বা কী এটি গ্রহণ করছে, বা কী কারণে তার কোনও জ্ঞান থাকা উচিত নয়। জেএসএন যদি অনেক উত্পাদক এবং ভোক্তাদের মধ্যে যোগাযোগের পদ্ধতি হিসাবে ব্যবহৃত হয়, তবে প্রযোজকের প্রযুক্তিগত স্ট্যাকটি বিবেচনা করা উচিত নয়।
রবি ওয়ারহাম

1
@ রবিবি ওয়ারহাম আমি একরকম তাতে একমত হয়েছি। এখানে জিনিসটি "মান অনুসারে" সেখানে একটি সরকারী নামকরণ কনভেনশন নেই। সুতরাং সেই সাথে, সম্ভবত কোনও একটি "বাই ফ্যাক্টো" বেছে নিতে হবে যা প্রযুক্তি স্ট্যাকটি দেখার জন্য। আমি মনে করি প্রযুক্তি স্ট্যাকটি সন্ধান করা সবচেয়ে ভাল উপায়। ফেসবুকে একবার দেখুন, তারা কি জাভাস্ক্রিপ্টকে historতিহাসিকভাবে সম্মান করেছে এবং স্নেক কেস ব্যবহার করেছে? নাহ! তারা পিএইচপি-র স্নেক_কেসে আটকে থাকতে বেছে নিয়েছে।
আবেল ক্লেলেজো

18

বিশেষত নোডজেএস-এ আমার জন্য, যদি আমি ডেটাবেসগুলি নিয়ে কাজ করি এবং আমার ক্ষেত্রের নামগুলি আন্ডারস্কোর দ্বারা পৃথক করা হয় তবে আমি সেগুলি স্ট্রাক কীগুলিতেও ব্যবহার করি।

এটি কারণ, ডিবি ক্ষেত্রগুলিতে প্রচুর সংক্ষিপ্ত শব্দ / সংক্ষিপ্ত বিবরণ রয়েছে তাই অ্যাপসএনএসআইন্টারফেস আরআরটেষ্টের মতো কিছুটা অগোছালো দেখাচ্ছে তবে অ্যাপ_স্নেস_ইন্টারফেস_আরআর_স্টেস্টটি দুর্দান্ত

জাভাস্ক্রিপ্টের ভেরিয়েবলগুলিতে সমস্ত উট কেস এবং শ্রেণীর নাম (কনস্ট্রাক্টর) প্রপাপকেস হয়, তাই আপনি এর মতো কিছু দেখতে পাবেন

var devTask = {
        task_id: 120,
        store_id: 2118,
        task_name: 'generalLedger'
    };

অথবা

generalLedgerTask = new GeneralLedgerTask( devTask );

এবং অবশ্যই জেএসএন-তে কী / স্ট্রিংগুলি ডাবল উদ্ধৃতিতে আবৃত থাকে, তবে তারপরে আপনি কেবল JSON.stringify ব্যবহার করেন এবং জেএস বস্তুগুলিতে পাস করেন, সুতরাং এটি সম্পর্কে উদ্বিগ্ন হওয়ার দরকার নেই।

আমি JSON এবং জেএস নামকরণ কনভেনশনের মধ্যে এই খুশি মাধ্যমটি না পাওয়া পর্যন্ত আমি এটিকে কিছুটা লড়াই করেছি।


1
একই অবস্থা. অ্যান্ড্রয়েড ক্লায়েন্টে সর্প_জ্যাকের সাথে জেএসএন প্রাপ্তিটিকে বিশ্রী দেখাচ্ছে! এছাড়াও কলামের নামের জন্য ডাটাবেস কেসিংয়ের পার্থক্য করে না, তাই স্নাপকেস ডাটাবেসের জন্য সেরা বলে মনে হয়।
পৌরাণিক

জাভাতে @mythicalcoder JSON এর মূল অন্তর্নিহিত নয়। জাভা শুধুমাত্র জাভা যেমন পার্স জন্য বহিরাগত প্যাকেজ ব্যবহার org.json, gson। স্নাপকেস ডেটা প্রাপ্তি তেমন আঘাত করে না ...JSONObject.get('snake_case_key_here')
আবেল কালেজো

9

দেখে মনে হচ্ছে যে পর্যাপ্ত প্রকরণ রয়েছে যে সমস্ত কনভেনশন থেকে অন্যকে রূপান্তর করতে লোকেরা তাদের পথে চলে যায়: http://www.cowtowncoder.com/blog/archives/cat_json.html

উল্লেখযোগ্যভাবে, উল্লিখিত জ্যাকসন জেএসন পার্সার পছন্দ করেন bean_naming


5
ক্ষুদ্র সংশোধন: জাভা শিম নামকরণ সম্মেলন, যা (লোয়ার) উটের ক্ষেত্রে জ্যাকসন অক্ষমতা, মত beanNaming
StaxMan

0

আমি মনে করি JSON- তে কোনও আনুষ্ঠানিক নামকরণের সম্মেলন নেই, তবে এটি কীভাবে কাজ করছে তা দেখতে আপনি কিছু শিল্প নেতাদের অনুসরণ করতে পারেন।

গুগল, যা বিশ্বের অন্যতম বৃহত্তম আইটি সংস্থা, এর একটি জেএসওএন স্টাইল গাইড রয়েছে: https://google.github.io/styleguide/jsoncstyleguide.xml

সুবিধা গ্রহণ করে আপনি অন্যান্য স্টাইলের গাইড খুঁজে পেতে পারেন, যা গুগল এখানে সংজ্ঞায়িত করেছে: https://github.com/google/styleguide


0

অন্যরা যেমন বলেছে যে এর কোনও মান নেই তাই আপনার নিজের একটি বেছে নেওয়া উচিত। এটি করার সময় এখানে কয়েকটি বিষয় বিবেচনা করতে হবে:

  1. আপনি যদি JSON গ্রহনের জন্য জাভাস্ক্রিপ্ট ব্যবহার করছেন তবে উভয়ের বৈশিষ্ট্যের জন্য একই নামকরণ কনভেনশনটি ভিজ্যুয়াল ধারাবাহিকতা এবং সম্ভবত ক্লিনার কোড পুনরায় ব্যবহারের জন্য কিছু সুযোগ সরবরাহ করবে।

  2. কাবাব-কেস এড়ানোর জন্য একটি ছোট কারণ হিফেনগুলি ভ্যালুতে -প্রদর্শিত অক্ষরের সাথে দৃষ্টিভঙ্গি হতে পারে ।

    {
      "bank-balance": -10
    }

1
সাপ_অ্যাক্স ড্যাশ নয়, আন্ডারস্কোর ব্যবহার করে।
পেরেসবাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.