মন্তব্যগুলি JSON এ ব্যবহার করা যেতে পারে?


7599

আমি কি কোনও জেএসএন ফাইলের মধ্যে মন্তব্য ব্যবহার করতে পারি? যদি তাই হয়, কিভাবে?


153
@ স্টেটিং জ্যাক: এমন বিষয়গুলি ব্যাখ্যা করতে যা স্পষ্ট নাও হতে পারে, বা মন্তব্যগুলির সাথে অন্য যে কোনও কিছুই করতে পারে। আমার প্রায়শই ডেটা ফাইলগুলিতে মন্তব্য থাকে। এক্সএমএল, আইএনআই ফাইল এবং অন্যান্য অনেক ফর্ম্যাটে মন্তব্যের বিধান অন্তর্ভুক্ত রয়েছে।
মাইকেল বুড়

24
যদি আপনিও আমার মতো ভাবছেন যে //commentsসাব্লাইম টেক্সট কনফিগারেশন ফাইলের নির্দিষ্ট ব্যবহারের ক্ষেত্রে ঠিক আছে কিনা , উত্তরটি হ্যাঁ (সংস্করণ 2 হিসাবে)। সাব্লাইম টেক্সট এটি সম্পর্কে কমপক্ষে অভিযোগ করবে না, যেখানে এটি {"__comment": ...}কনসোলে অভিযোগ করবে কারণ এটি একটি অপ্রত্যাশিত ক্ষেত্র।
ড্রিফ্যাচ্যাচার

8
এবং সম্ভবত এটিই এটিএমএল তৈরির কারণ হ'ল ..
অ্যালেক্স নোলাস্কো

10
সামান্য নুবিশ তবে, আমি জেএসএনে মন্তব্যের জন্য // ব্যবহার করার চেষ্টাও করেছি। এখন আমি বুঝতে পারছি এটি আন্তঃচেঞ্জ / এক্সচেঞ্জের জন্য কঠোরভাবে ব্যবহৃত হয়। দীর্ঘশ্বাস! আমি আর কোনও মন্তব্য করতে পারছি না :( জীবন শেষ হয়ে গেছে !.
সিড

12
JSON5 মন্তব্য সমর্থন করে: stackoverflow.com/a/7901053/108238
schoetbi

উত্তর:


5583

না।

জেএসওএন সকলেরই ডেটা হওয়া উচিত এবং আপনি যদি কোনও মন্তব্য অন্তর্ভুক্ত করেন তবে এটিও ডেটা হবে।

আপনার কাছে একটি মনোনীত ডেটা উপাদান "_comment"থাকতে পারে (বা এমন কিছু) যা JSON ডেটা ব্যবহার করে এমন অ্যাপ্লিকেশনগুলি দ্বারা উপেক্ষা করা হবে।

আপনি সম্ভবত JSON উত্পন্ন / গ্রহণকারী প্রক্রিয়াগুলিতে মন্তব্য করার চেয়ে আরও ভাল হবেন, কারণ তাদের ধারণা করা হয় যে JSON ডেটা আগে থেকে কী হবে, বা কমপক্ষে এটির কাঠামো হবে know

তবে আপনি যদি সিদ্ধান্ত নেন:

{
   "_comment": "comment text goes here...",
   "glossary": {
      "title": "example glossary",
      "GlossDiv": {
         "title": "S",
         "GlossList": {
            "GlossEntry": {
               "ID": "SGML",
               "SortAs": "SGML",
               "GlossTerm": "Standard Generalized Markup Language",
               "Acronym": "SGML",
               "Abbrev": "ISO 8879:1986",
               "GlossDef": {
                  "para": "A meta-markup language, used to create markup languages such as DocBook.",
                  "GlossSeeAlso": ["GML", "XML"]
               },
               "GlossSee": "markup"
            }
         }
      }
   }
}

232
কোনও মতামত নামে কোনও বৈধ ক্ষেত্র আছে যদি প্রকৃত মন্তব্যে এটির একরকম উপসর্গ থাকতে পারে:"__comment":"comment text goes here...",
রব ফোনসেকা-এনসর

19
জাভা গুগল-জিএসসনের জেসন লাইব্রেরি বিটিডাব্লুটির মন্তব্যের জন্য সমর্থন রয়েছে।
কেন্দ্রিক

11
আমি সম্পত্তি Accronymএবং Abbrevবৈশিষ্ট্য সম্পর্কে একটি পৃথক মন্তব্য চাইলে কি হবে? আমি এই প্যাটার্নটি আগে ব্যবহার করেছি তবে বন্ধ হয়ে গেছে কারণ এটি আমাকে এটি করতে দেয় না। এটি একটি হ্যাক। আমি যদি এর __comment__পরিবর্তে কোনও সম্পত্তির নাম প্রিপেন্ড করি তবে । এটি "__ মন্তব্য__আব্রেরেভ", এটি এখনও একটি হ্যাক, তবে আমাকে সমস্ত প্রজন্মের বিষয়ে মন্তব্য করতে দেবে
হুয়ান মেন্ডেস

41
আপনি "//" ব্যবহার করতে পারেন: এটি আরও স্থানীয় দেখায় এবং একই পিতামাতার মধ্যে পুনরাবৃত্তিযোগ্য
smnbbrv

4
যখন JSON মানব-উদ্দেশ্যযুক্ত কনফিগারেশন ফাইলগুলির জন্য ব্যবহৃত হয়, তখন তাদের আরও ভালভাবে বোঝার জন্য এগুলি এনেটেট করা উচিত। টীকাহীন, এই জাতীয় ফাইল আর বৈধ JSON নয়, তবে এর সমাধান রয়েছে। উদাহরণস্বরূপ, গুগলের জিওয়াইপি # স্টাইল মন্তব্যগুলিকে সমর্থন করে। জেএসএন.মিনিফাই আপনাকে আপনার ইনপুট ফাইল থেকে সি / সি ++ স্টাইল মন্তব্যগুলি বাতিল করতে সহায়তা করবে।
Петър Петров

1841

না , ফর্মের মন্তব্যগুলি //…বা /*…*/জেএসএনে অনুমোদিত নয়। এই উত্তর উপর ভিত্তি করে:

  • http://www.json.org
  • আরএফসি 4627 : application/jsonজাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (জেএসএন) এর জন্য মিডিয়া টাইপ
  • আরএফসি 8259 জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (জেএসএন) ডেটা ইন্টারচেঞ্জ ফর্ম্যাট (সুপারসিডিস আরএফসি 4627, 7158, 7159)

67
আপনি যদি মন্তব্যগুলির মাধ্যমে আপনার জেএসওএনটি বর্ননা করতে চান (এটি এটিকে অবৈধ জেএসওএন তৈরি করে), তবে পার্সিং বা প্রেরণের আগে এটিকে ছোট করে দিন। ক্রকফোর্ড নিজেই কনফিগারেশন ফাইলগুলির প্রসঙ্গে 2012 সালে এটি স্বীকার করেছিলেন।
টুলবার

24
@alkuzad: এটা আনুষ্ঠানিক ব্যাকরণ বিষয় আসে, তখন সেখানে কিছু সুস্পষ্টভাবে বলছে যে তারা হতে হবে করছে , অনুমোদিত নয় অন্যান্য উপায় কাছাকাছি। উদাহরণস্বরূপ, আপনার পছন্দসই প্রোগ্রামিংয়ের ভাষাটি নিন: কেবলমাত্র কিছু কাঙ্ক্ষিত (তবে অনুপস্থিত) বৈশিষ্ট্যটি সুস্পষ্টরূপে অনুমোদিত নয়, এর অর্থ এই নয় যে আপনার সংকলকটি যাদুতে এটি সনাক্ত করবে।
স্টাকাক্স -

5
হ্যাঁ. JSON ফর্ম্যাটটিতে উপাদানগুলির মধ্যে প্রচুর পরিমাণে ডেড-স্পেস রয়েছে এবং সেগুলি অঞ্চলে স্পর্শ-সংবেদনশীল, সুতরাং সেখানে আপনার একক বা মাল্টি-লাইন মন্তব্য না করার কোনও কারণ নেই। অনেক পার্সার এবং মিনিফায়াররা জেএসএন মন্তব্যেও সমর্থন করে, তাই কেবল নিশ্চিত করুন যে আপনার পার্সার তাদের সমর্থন করে। অ্যাপ্লিকেশন ডেটা এবং কনফিগারেশন সেটিংসের জন্য জেএসএন প্রচুর ব্যবহৃত হয়, সুতরাং এখনই মন্তব্যগুলি প্রয়োজনীয়। "অফিসিয়াল স্পেস" একটি দুর্দান্ত ধারণা, তবে এটি অপর্যাপ্ত এবং অপ্রচলিত, তাই খুব খারাপ। আপনি যদি পেডলোডের আকার বা কর্মক্ষমতা সম্পর্কে উদ্বিগ্ন হন তবে আপনার জেএসএনকে মিনিফাই করুন।
ট্রায়ঙ্কো

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

18
@ সিএমক্রোনিরগো: আপনি অবশ্যই JSON এর সীমাবদ্ধতা সম্পর্কে অভিযোগ করার পক্ষে প্রথম নন ... এজন্য আমাদের কাছে পার্সার রয়েছে যা নিঃশব্দে মন্তব্য করতে অনুমতি দেয় এবং YAML এবং JSON5 এর মতো অন্যান্য ফর্ম্যাটগুলি other তবে এটি জাসন যা তা সত্য তা পরিবর্তন করে না। বরং, আমি আকর্ষণীয় মনে করি যে লোকেরা JSON ব্যবহারের উদ্দেশ্যে এমন উদ্দেশ্যে ব্যবহার শুরু করেছিল যেখানে প্রশ্নের সীমাবদ্ধতার প্রেক্ষিতে স্পষ্টভাবে এটি প্রথম পর্যায়ে পর্যাপ্ত ছিল না। JSON ফর্ম্যাটটিকে দোষ দিবেন না; এটি বিশেষভাবে উপযুক্ত নয় এমনটি ব্যবহার করার জন্য জোর দেওয়ার জন্য নিজেকে দোষ দিন।
স্টাকাক্স

802

মন্তব্যগুলি অন্তর্ভুক্ত করুন যদি আপনি চয়ন করেন; পার্সিং বা প্রেরণের আগে একটি মিনিফায়ার দিয়ে এগুলি ছড়িয়ে দিন।

আমি সবেমাত্র JSON.minify () প্রকাশ করেছি যা জেএসওএন-এর একটি ব্লক থেকে মন্তব্য এবং শ্বেত স্পেস বাদ দেয় এবং এটি বৈধ জেএসওনকে পার্স করতে পারে। সুতরাং, আপনি এটি ব্যবহার করতে পারেন:

JSON.parse(JSON.minify(my_str));

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

মনে করুন আপনি JSON ব্যবহার করছেন কনফিগারেশন ফাইলগুলি রাখতে, যা আপনি টীকাতে চান। এগিয়ে যান এবং আপনার পছন্দ মত সমস্ত মন্তব্য .োকান। তারপরে এটিটিকে আপনার জেএসএন পার্সারের হাতে দেওয়ার আগে এটি জেএসমিনের মাধ্যমে পাইপ করুন। - ডগলাস ক্রকফোর্ড, ২০১২

আশা করি যারা JSON.minify () কার্যকর হতে পারে তার সাথে দ্বিমত পোষণকারীদের পক্ষে এটি সহায়ক।


153
JSON.minify () এর সাথে আমার একমাত্র সমস্যাটি হ'ল এটি আসলেই ধীর। সুতরাং আমি আমার নিজস্ব বাস্তবায়ন করেছি যা একই কাজ করে: gist.github.com/1170297 । কিছু বড় পরীক্ষামূলক ফাইলগুলিতে আপনার প্রয়োগটি 74 সেকেন্ড এবং খনি 0.06 সেকেন্ডে লাগে।
উইজকিড

56
আপনি যদি JSON.minify () এর জন্য গিথুব রেপোতে প্রস্তাবিত বিকল্প অ্যালগরিদম জমা দিতে পারতেন তবে দুর্দান্ত হবেন, যাতে এটি সমস্ত সমর্থিত ল্যাংগুলিতে
কাইল সিম্পসন

16
@ মনিগড আমি ইতিমধ্যে এই বিষয়ে ডগের ভাবনাগুলি বহুবার শুনেছি। আমি আমার ব্লগ পোস্টে তাদের অনেক আগে সম্বোধন করেছি: blog.getify.com/json-comments
কাইল সিম্পসন

18
@ মার্নেনলাইবো-কোসার এখনও তথ্যের স্ট্রিম (বা এমনকি প্যাকেট) ব্যবহারের জন্য মন্তব্যে কার্যকর বৈধ ব্যবহার রয়েছে: নির্ধারণের সময় বা উত্সগুলির মতো ডায়াগনস্টিকস মেটাডাটা অন্তর্ভুক্ত করা এক্সএমএল এর সাধারণ ব্যবহার, এবং জেএসএন ডেটার জন্যও পুরোপুরি বুদ্ধিমান। মন্তব্যের বিরুদ্ধে যুক্তিগুলি অগভীর, এবং কোনও পাঠ্য ডেটা ফর্ম্যাট মন্তব্যের জন্য অনুমতি দেওয়া উচিত, নির্ধারিত উদ্দেশ্যে ব্যবহার ব্যতীত (কোনও কিছুতেই বোঝা যায় না যে JSON অন্য কোথাও ব্যবহার করা যাবে না, fww)
StaxMan

18
যদি জেএসএনের সর্বজনীন স্বীকৃতি পেতে হয় (যা এটি মূলত করে) তবে তার সর্বজনীন প্রয়োগ থাকতে হবে। উদাহরণ: JSON অ্যাপ্লিকেশন কনফিগারেশন ফাইল হিসাবে পরিবেশন করতে পারে। এই অ্যাপ্লিকেশন মন্তব্য করতে চাইবে।
ডিম্বাকর্ষণকারী 19

441

মন্তব্যগুলি নকশা দ্বারা জেএসএন থেকে সরানো হয়েছে।

আমি জেএসএন থেকে মন্তব্যগুলি অপসারণ করেছি কারণ আমি দেখেছি লোকেরা তাদেরকে পার্সিং নির্দেশিকা রাখতে ব্যবহার করছে, এমন একটি অভ্যাস যা আন্তঃব্যবহারযোগ্যতা নষ্ট করে দেবে। আমি জানি যে মন্তব্যের অভাব কিছু লোককে দু: খিত করে তোলে, তবে তা করা উচিত নয়।

মনে করুন আপনি JSON ব্যবহার করছেন কনফিগারেশন ফাইলগুলি রাখতে, যা আপনি টীকাতে চান। এগিয়ে যান এবং আপনার পছন্দ মত সমস্ত মন্তব্য .োকান। তারপরে এটিটিকে আপনার জেএসএন পার্সারের হাতে দেওয়ার আগে এটি জেএসমিনের মাধ্যমে পাইপ করুন।

উত্স: জি + তে ডগলাস ক্রকফোর্ডের সর্বজনীন বিবৃতি


198
আমি ভেবেছিলাম, জেএসওন এর চেয়ে বেশি মানব পাঠযোগ্য হওয়ার কথা ছিল, বলুন, এক্সএমএল? মন্তব্যগুলি পাঠযোগ্যতার জন্য।
ইন্ট্রিপিডিস

25
যাইহোক, আপনি দুষ্টু হতে পারেন এবং JSON- এ পার্সিং নির্দেশিকা যুক্ত করতে পারেন: {"__Directives": {"# n #": "তারিখটাইম। এখন"}, "ভালদিট": "# এন #"} ... দেখে মনে হচ্ছে YAML এগিয়ে যাওয়ার পথে ...
ইন্ট্রিপিডিস

73
ব্যক্তিগত মতামত: মন্তব্যগুলিকে লম্বা করার অনুমতি দেওয়া হচ্ছে না। আমার কনফিগার করা ফাইলগুলি ডিকোড করার জন্য, মন্তব্যগুলিকে উপেক্ষা করার জন্য একটি মানহীন JSON পার্সার তৈরি করা ছাড়া আমার কাছে অন্য কোনও বিকল্প ছিল না।
caiosm1005

17
@ আর্টুরকাজাক্কা আমি এখনও এই বিষয়টিকে অপছন্দ করি যে জেএসওন মন্তব্যগুলিকে সমর্থন করে না, তবে আমি আইএনআইকে চেষ্টা করেছিলাম এবং অবশ্যই স্বীকার করতে হবে যে এটি কনফিগার ফাইলগুলির জন্য জেএসএনে তাদের ব্যবহার করা আরও অনেক বেশি অর্থবোধ করে। প্রতিক্রিয়াটির জন্য ধন্যবাদ এবং আশা করি এই কথোপকথনটি পড়ার সাথে সাথে আরও লোকেরা তাদের মন পরিবর্তন করবে। (পার্সার তৈরি করা যাইহোক অনুশীলনের চেয়ে বেশি ছিল :)
caiosm1005

77
এটি সমস্ত সাইকেলকে প্রশিক্ষণের চাকা রাখার দরকারের কারণ কিছু লোক সাইকেল চালাতে পারে না। একটি গুরুত্বপূর্ণ বৈশিষ্ট্য অপসারণ করা হচ্ছে কারণ বোকা লোকেরা এটি খারাপ ডিজাইন abuse একটি ডেটা ফর্ম্যাটটি ইডিয়ট-প্রুফ হওয়ার চেয়ে ব্যবহারের অগ্রাধিকার দিতে হবে।
ফিল গয়েটজ

205

অস্বীকৃতি: আপনার ওয়্যারেন্টি বাতিল

হিসাবে চিহ্নিত করা হয়েছে, এই হ্যাকটি অনুমানের বাস্তবায়নের সুযোগ নেয়। সমস্ত JSON পার্সাররা JSON এই ধরণের বুঝতে পারবেন না। স্ট্রিমিং পার্সারগুলি বিশেষত দম বন্ধ করবে।

এটি একটি আকর্ষণীয় কৌতূহল, তবে আপনার সত্যিকার অর্থে এটি কোনও কিছুর জন্য ব্যবহার করা উচিত নয় । নীচে মূল উত্তর দেওয়া আছে।


আমি একটি সামান্য হ্যাক পেয়েছি যা আপনাকে একটি JSON ফাইলে এমন মন্তব্য দেওয়ার অনুমতি দেয় যা পার্সিংয়ের উপর প্রভাব ফেলবে না বা কোনও উপায়ে উপস্থাপন করা ডেটা পরিবর্তন করতে পারে।

এটি প্রদর্শিত হয় যে কোনও বস্তুকে আক্ষরিক ঘোষণা করার সময় আপনি একই কী দিয়ে দুটি মান নির্দিষ্ট করতে পারেন এবং শেষটি অগ্রাধিকার নেয়। বিশ্বাস করুন বা না করুন, এটি জানে যে JSON পার্সাররা একইভাবে কাজ করে। সুতরাং আমরা উত্স জেএসওনে এমন মন্তব্য তৈরি করতে এটি ব্যবহার করতে পারি যা কোনও পার্সড অবজেক্ট উপস্থাপনায় উপস্থিত থাকবে না।

({a: 1, a: 2});
// => Object {a: 2}
Object.keys(JSON.parse('{"a": 1, "a": 2}')).length; 
// => 1

আমরা যদি এই কৌশলটি প্রয়োগ করি তবে আপনার মন্তব্য করা JSON ফাইলটি দেখতে দেখতে এমন হতে পারে:

{
  "api_host" : "The hostname of your API server. You may also specify the port.",
  "api_host" : "hodorhodor.com",

  "retry_interval" : "The interval in seconds between retrying failed API calls",
  "retry_interval" : 10,

  "auth_token" : "The authentication token. It is available in your developer dashboard under 'Settings'",
  "auth_token" : "5ad0eb93697215bc0d48a7b69aa6fb8b",

  "favorite_numbers": "An array containing my all-time favorite numbers",
  "favorite_numbers": [19, 13, 53]
}

উপরের কোডটি বৈধ JSON । আপনি যদি এটির বিশ্লেষণ করেন তবে আপনি এই জাতীয় কোনও জিনিস পাবেন:

{
    "api_host": "hodorhodor.com",
    "retry_interval": 10,
    "auth_token": "5ad0eb93697215bc0d48a7b69aa6fb8b",
    "favorite_numbers": [19,13,53]
}

যার অর্থ মন্তব্যগুলির কোনও চিহ্ন নেই এবং তাদের অদ্ভুত পার্শ্ব-প্রতিক্রিয়া হবে না।

শুভ হ্যাকিং!


150
স্পেসিফিকেশন থেকে : একটি অবজেক্টের মধ্যে নামগুলি অনন্য হওয়া উচিত।
কোয়ান্টিন

113
"সমস্ত বাস্তবায়ন এটি একইভাবে পরিচালনা করে" - এটি প্রমাণ করা একটি কঠিন বিষয়।
কুইন্টিন

91
জেএসএনে উপাদানগুলির ক্রম গ্যারান্টিযুক্ত নয়। তার মানে "শেষ" আইটেমটি পরিবর্তন হতে পারে!
sep332

66
এটি স্পষ্টতই অনুমানটিকে লঙ্ঘন করে (উপরের মন্তব্যগুলি দেখুন), এটি করবেন না। ietf.org/rfc/rfc4627.txt?number=4627
ভয়েডলোগিক

333
না - পার্সার স্ট্রিমিং হলে কী হবে? পার্সার যদি এমন কোনও অভিধানে পড়েন যেখানে কী অর্ডারিং সংজ্ঞায়িত না হয়? এই আগুন দিয়ে হত্যা
ডিনবম্বর্ন

183

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

Hjson মানুষের জন্য একটি কনফিগারেশন ফাইল ফর্ম্যাট। স্বচ্ছন্দ বাক্য গঠন, কম ভুল, আরও মন্তব্য।

Hjson পরিচয়

জাভাস্ক্রিপ্ট, জাভা, পাইথন, পিএইচপি, মরিচা, গো, রুবি এবং সি # লাইব্রেরির জন্য hjson.org দেখুন ।


13
সম্মত। এটি স্পষ্টতই একটি ভাল প্রকরণ যা খোলামেলা রক্ষণশীল মানুষ কেবল ঘৃণা করতে পছন্দ করবে। আমি আশা করি আপনার বাস্তবায়ন আরও পরিচিত হয়ে উঠবে - এবং সম্ভবত এটি আসলটির চেয়েও বেশি জনপ্রিয় হয়ে উঠবে;) আমি আশা করি যে কেউ রুবি দিয়েও এটি বাস্তবায়ন করবে। @ অ্যাডেলফাস ভাষাটি সংজ্ঞায়িত হচ্ছে আপনার নিজস্ব দৃষ্টিভঙ্গি বা মতামত। রক্ষণশীল "বিকাশকারী" হয়ে আপনি যদি একজন হন তবে প্রমাণ করেন যে আপনি ভাল আছেন এবং আপনি সীমিত জায়গায় নিজেকে আটকে রেখে আরও খারাপ হতে পারেন। সহজেই লোককে ভয়ানক বিকাশকারী হিসাবে বিচার করবেন না।
কনসোলবক্স

7
এটি সম্পর্কে দুঃখিত, @ কনসোলবক্স। সম্ভবত আপনি পড়ার পরে আপনার "সু-সংজ্ঞায়িত জেএসওএন আপনার মতামত" দৃষ্টিভঙ্গির পুনর্বিবেচনা করতে পারেনইকমা-ইন্টারন্যাশনাল.আর. / প্রজাতন্ত্র / ফাইলস / এসিএএমএসটি / এসিএমএ-404.pdf জেএসওন এটি একটি বাস্তব স্ট্যান্ডার্ড এবং তাদের নিজস্ব "বিশেষ" সংস্করণ বাস্তবায়ন করছে বিভাজন, বিভ্রান্তি এবং অনেক সময় নষ্ট করে দেয়। কোড লেখার সময় মেস ওয়েব ডেভলপারদের সাথে বাকী রয়েছে কেবল কারণ প্রতিটি ব্রাউজার স্ট্যান্ডার্ডের কিছুটা আলাদা সংস্করণ প্রয়োগ করে। JSON ভাষা নিখুঁত নাও হতে পারে, তবে খণ্ডগুলি আরও খারাপ। এবং হ্যাঁ, এটি কেবল একটি মতামত এবং আপনি দ্বিমত করতে পারেন নিখরচায়।
অ্যাডেলফাস

22
আমি আপনার আঠার প্রশংসা করি, তবে আপনি YAML পুনরায় উদ্ভাবন করছেন। আপনি যদি অনেকটা নমনীয়তা এবং মানব পাঠযোগ্যতা চান তবে YAML ব্যবহার করুন (আসলে: স্ট্যাকওভারফ্লো / সেকশনস / ৪৪০৩৯৯/২ ) বা কার্মুডজোনির সাথে লেগে থাকুন, তবুও দ্ব্যর্থহীন জেএসএন।
টুলবারটি

4
আমি সর্বাধিক ব্যবহারকারীর পক্ষে কনফিগারেশন ফর্ম্যাটটি এখনও আইএনআই IN এটি সোজা এবং খুব বেশি সিনট্যাক্স ভারী নয়। এটি কনফিগারেশন পুকুরে তাদের পায়ের আঙ্গুলগুলি কেবল ডুবিয়ে দেওয়ার জন্য এটি কম ভীতিজনক করে তোলে।
ম্যাট

14
যখনই আপনি কনফিগ যেমন JSON (যেখানে মন্তব্য প্রয়োজন হয় প্রয়োজন) - আপনার ফাইল ".json" এর পরিবর্তে ".js" NAME .. JS করতে পারেন অবশ্যই কোনো বৈধ JSON বস্তু হ্যান্ডেল এবং অতিরিক্ত পারেন মন্তব্য হ্যান্ডেল .. সেই কারনেই কেন এটা "webpack.config.js" এবং "webpack.config.json" নয় (ওয়েলপ্যাকটিতেও এর আরও অনেক কারণ রয়েছে: পি)
জেবিবি

122

YAML ব্যবহার বিবেচনা করুন। এটি প্রায় JSON এর সুপারস্টার (কার্যত সমস্ত বৈধ JSON বৈধ YAML) এবং এটি মন্তব্যের অনুমতি দেয়।


12
@ g33kz0r সঠিক, সুতরাং জেএসএনের একটি নিকট-সুপারসেট হিসাবে ওয়াইএএমএল সম্পর্কে আমার বিবরণ।
মার্নেন লাইবো-কোসার

12
@ নাটস ইতিমধ্যে অনেক লোক ইঙ্গিত করেছিল যে উত্তরটি নেই। আমি ওপির লক্ষ্য অর্জনের আরও ভাল উপায়ের পরামর্শ দিয়েছি। এটি একটি উত্তর।
মার্নেন লাইবো-কোসার

5
ডাউনসাইড: yamlপাইথন দিয়ে পাঠাগারটি পাঠানো হয় না।
রক্তক্ষরণ আঙুলগুলি

6
@ মার্নেন-লাইবো-কোসার: হ্যাঁ, জাভা এবং পার্লের জন্য উপলব্ধ ওয়ামএএমএল লাইব্রেরিগুলি ব্যবহার করার পক্ষে অবশ্যই অক্ষমতা ছিল এবং প্রত্যাশা করা যে YAML একে অপরের দ্বারা ত্রুটি ছাড়াই গ্রাস করা হবে। ওয়াইএএমএল ইন্টারপটি একটি সমস্যা ছিল, তবে জেএসওএন ইন্টারপ ছিল না, সম্পূর্ণ আমার জ্ঞানের অভাব দ্বারা ব্যাখ্যা করা হয়েছে।
টুলবার

3
@ মার্নেন-লাইবো-কোসার, একটি ফর্ম্যাট যা সাধারণ জিনিস দিয়ে একই জিনিসটি সম্পাদন করে তা আরও ভাল। অসম্পূর্ণ বাস্তবায়ন সহ আদর্শ বিন্যাসের চেয়ে নিখুঁত বাস্তবায়ন সহ একটি বাস্তববাদী বিন্যাস ভাল। ত্রুটিযুক্ত libs জন্য সমস্ত দোষ প্রয়োগকারীদের কাঁধে দায়ী না; YAML বৈশিষ্টটি দীর্ঘ, ঘন এবং অবসন্ন। এর উইকিপিডিয়া এন্ট্রি দুটো অস্পষ্টতার উদাহরণ দেয়; যদি কোনও ব্যক্তিকে অস্পষ্টতা থেকে রক্ষা করতে কোনও মানব এবং ফর্ম্যাটের মধ্যে একটি ইমিটর লাগাতে হয় তবে ফর্ম্যাটটি তার মানব বান্ধব দাবি হারায় l জেএসএন কম দাবি করে এবং বেশিরভাগ ক্ষেত্রে সফল হয় যেখানে ওয়াইএএমএল বেশি দাবি করে এবং সংক্ষিপ্ত হয়।
টুলবার

108

আপনি পারবেন না। কমপক্ষে এটি json.org এ তাত্ক্ষণিকভাবে আমার অভিজ্ঞতা ।

JSON এর বাক্য গঠনটি সেই পৃষ্ঠাতে দৃশ্যমান করেছে। মন্তব্য সম্পর্কে কোন নোট নেই।


67

মন্তব্যগুলি কোনও অফিশিয়াল স্ট্যান্ডার্ড নয় যদিও কিছু পার্সার সি ++ - স্টাইলের মন্তব্যে সমর্থন করে। আমি যেটি ব্যবহার করি তা হ'ল জসনসিপি । উদাহরণগুলিতে এটি একটি রয়েছে:

// Configuration options
{
    // Default encoding for text
    "encoding" : "UTF-8",

    // Plug-ins loaded at start-up
    "plug-ins" : [
        "python",
        "c++",
        "ruby"
        ],

    // Tab indent size
    "indent" : { "length" : 3, "use_space": true }
}

jsonlint এটিকে বৈধতা দেয় না। সুতরাং মন্তব্যগুলি একটি পার্সার নির্দিষ্ট এক্সটেনশন এবং মান নয়।

আর একটি পার্সার হলেন জেএসএন 5

জেএসএন টোমালের একটি বিকল্প ।

এর আরও বিকল্প হ'ল জসনক


গ্রোভির জেএসওএন পরিচালনার জন্য কিছু বিল্ট-ইন ক্লাস রয়েছে । JsonSlurper মন্তব্যগুলি পরিচালনা করতে পারে। অবশ্যই, সরকারী বিশেষে মন্তব্যের অনুমতি নেই, সুতরাং কোনও পার্সারে এই আচরণটি মানহীন এবং অ-বহনযোগ্য।
izrik

নিউটনসফট জসন.এনইটি কোনও সমস্যা ছাড়াই সি-স্টাইলের মন্তব্যে সমর্থন করে
ম্যাক্স

66

পরিবর্তে আপনার একটি JSON স্কিমা লেখা উচিত । জেএসএন স্কিমা বর্তমানে প্রস্তাবিত ইন্টারনেট খসড়া স্পেসিফিকেশন। ডকুমেন্টেশন ছাড়াও, স্কিমাটি আপনার জেএসএন ডেটা বৈধ করার জন্যও ব্যবহার করা যেতে পারে।

উদাহরণ:

{
    "description":"A person",
    "type":"object",
    "properties":
        {
            "name":
                {
                    "type":"string"
                },
            "age":
                {
                    "type":"integer",
                    "maximum":125
                }
        }
}

আপনি বিবরণ স্কিমা বৈশিষ্ট্যটি ব্যবহার করে ডকুমেন্টেশন সরবরাহ করতে পারেন ।


5
জেএসওএন স্কিমা কি জীবিত? এটি বিদ্যমান তবে এটি কোনও পরিচিত গ্রন্থাগার দ্বারা সমর্থিত?
মুনহিতসু

1
হ্যাঁ, জসন-স্কিমা গুগল গ্রুপ মোটামুটি সক্রিয় এবং আমি জেএসএন স্কিমা যাচাইকারীকে ভাল জাভাস্ক্রিপ্ট প্রয়োগের জন্য জেএসভিকে সুপারিশ করব ।
রাফল

5
এটি কেবল কাঠামোগত ডকুমেন্টেশনগুলিতে সহায়তা করে, অ্যাড-হক ডকুমেন্টেশনগুলি নয়
জুয়ান মেন্ডেস

আপনি যদি ক্লোজার ব্যবহার করেন (এবং আমি নিশ্চিত যে আপনি তা করেন না) এখানে যুক্তিযুক্ত বৈশিষ্ট্যযুক্ত ওপেন-সোর্স জাসন
Charleslparker

@ মুনহিতসু মানাটি.জেসন (। নেট) ব্যাপকভাবে জেএসএন স্কিমা সমর্থন করে।
গ্রেসডেনিস

64

আপনি যদি জ্যাকসনকে আপনার জেএসএন পার্সার হিসাবে ব্যবহার করছেন তবে মন্তব্যগুলির অনুমতি দেওয়ার জন্য আপনি এটিই সক্ষম করে:

ObjectMapper mapper = new ObjectMapper().configure(Feature.ALLOW_COMMENTS, true);

তারপরে আপনার মতামত থাকতে পারে:

{
  key: "value" // Comment
}

এবং আপনি #সেট করে মন্তব্যগুলি দিয়ে শুরু করতে পারেন :

mapper.configure(Feature.ALLOW_YAML_COMMENTS, true);

তবে সাধারণভাবে (পূর্বে উত্তর হিসাবে) স্পেসিফিকেশন মন্তব্যের অনুমতি দেয় না।


50

গুগল ফায়ারবেস ডকুমেন্টেশনে আমি যা পেয়েছি তা এখানে যা আপনাকে জেএসএনে মন্তব্য রাখতে দেয়:

{
  "//": "Some browsers will use this to enable push notifications.",
  "//": "It is the same for all projects, this is not your project's sender ID",
  "gcm_sender_id": "1234567890"
}

এফওয়াইআই, ফায়ারবেস রিয়েলটাইম ডেটাবেস একটি কীতে '/' ব্যবহারের অনুমতি দেয় না। সুতরাং এটি আপনার নিজের ব্যবহারের জন্য একটি দুর্দান্ত সম্মেলন হতে পারে তবে আপনি এটি
ফায়ারবেসে

5
এই পদ্ধতিটি কিছু লাইব্রেরি ভাঙ্গা করে, যার জন্য কীটি অনন্য হওয়া আবশ্যক। আমি মন্তব্য সংখ্যা করে এই সমস্যাটি নিয়ে কাজ করছি।
MovGP0

ভাল মন্তব্য, আমি এই প্রশ্নটি এসও তে পেয়েছি ... এই অংশটি স্ট্যাকওভারফ্লো.com
মানা

4
আমি আজকাল এটির মতো ব্যবহার করতে ঝোঁক: {"// foo": "ফু মন্তব্য", "ফু": "ফু মান", "// বার": "বার মন্তব্য", "বার": "বার মান"} আপনি একাধিক মন্তব্যের জন্য একটি অ্যারে ব্যবহার করতে পারেন: {"// foo": ["foo মন্তব্য 1", "foo মন্তব্য 2"], "foo": '' foo মান "}
MovGP0

47

কোন । জেএসএন মন্তব্যগুলির পক্ষে সমর্থন করত, তবে তাদের আপত্তিজনকভাবে ব্যবহার করা হয়েছিল এবং মান থেকে সরানো হয়েছিল।

জেএসএনের নির্মাতা থেকে:

আমি জেএসএন থেকে মন্তব্যগুলি অপসারণ করেছি কারণ আমি দেখেছি লোকেরা পার্সিং নির্দেশিকা রাখতে তাদের ব্যবহার করছে, এমন একটি অভ্যাস যা আন্তঃব্যবহারযোগ্যতা নষ্ট করে দেবে। আমি জানি যে মন্তব্যের অভাব কিছু লোককে দু: খিত করে তোলে, তবে তা করা উচিত নয়। - ডগলাস ক্রকফোর্ড, ২০১২

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

ডিজাইন দ্বারা জেএসএন হ'ল এক্সএমএলের একটি সহজেই বিপরীত ইঞ্জিনিয়ারড (হিউম্যান পার্সড) বিকল্প। এমনকি এটিকে এ পর্যন্ত সরল করা হয়েছে যে টীকাগুলি অপ্রয়োজনীয়। এটি একটি মার্কআপ ভাষাও নয়। লক্ষ্য স্থায়িত্ব এবং আন্তঃক্রিয়াবিধি।

যে কেউ অবজেক্ট ওরিয়েন্টেশনের "হ্যাস-এ" সম্পর্ক বোঝে যে কোনও জেএসওএন কাঠামো বুঝতে পারে - এটি পুরো বিষয়টি। এটি নোড ট্যাগ (কী / মান জোড়) সহ কেবল একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ (ডিএজি), যা সর্বজনীন ডেটা স্ট্রাকচার near

এটির জন্য প্রয়োজন কেবল এ্যানোটেশনটি হতে পারে "// এগুলি ডিএজি ট্যাগ"। মূল নামগুলি প্রয়োজন মতো তথ্যবহুল হতে পারে, যথেচ্ছ শব্দার্থতত্ত্বের অনুমতি দেয়।

যে কোনও প্ল্যাটফর্ম JSON কে মাত্র কয়েকটি লাইনের কোড দিয়ে পার্স করতে পারে। এক্সএমএলকে জটিল OO লাইব্রেরিগুলি দরকার যা অনেক প্ল্যাটফর্মে ব্যবহারযোগ্য নয়।

টীকাগুলি কেবল JSONকে কম আন্তঃযোগযোগ্য করে তুলবে। আপনার যা প্রয়োজন তা একটি মার্কআপ ল্যাঙ্গুয়েজ (এক্সএমএল) না হলে কেবল যোগ করার মতো আর কিছুই নেই এবং আপনার অজানা ডেটা সহজে পার্স করা হয় কিনা সেদিকে খেয়াল রাখবেন না।

তবে জেএসএনের নির্মাতা যেমন পর্যবেক্ষণ করেছেন, সেখানে সবসময় মন্তব্যের জন্য জেএস পাইপলাইন সমর্থন রয়েছে:

এগিয়ে যান এবং আপনার পছন্দ মত সমস্ত মন্তব্য .োকান। তারপরে এটিটিকে আপনার জেএসএন পার্সারের হাতে দেওয়ার আগে এটি জেএসমিনের মাধ্যমে পাইপ করুন। - ডগলাস ক্রকফোর্ড, ২০১২


37

আপনার পাঠ্য ফাইলটি, যা একটি জেএসএন স্ট্রিং, যদি কোনও প্রোগ্রাম দ্বারা পড়তে চলেছে, তবে এটি ব্যবহার করার আগে সি বা সি ++ স্টাইলের মন্তব্যগুলি ছাঁটাই করা কতটা কঠিন?

উত্তর: এটি ওয়ান লাইনার হবে। যদি আপনি এটি করেন তবে JSON ফাইলগুলি কনফিগারেশন ফাইল হিসাবে ব্যবহৃত হতে পারে।


1
সম্ভবত এখন পর্যন্ত সেরা পরামর্শ, যদিও ফাইলগুলি একটি ইন্টারচেঞ্জ ফর্ম্যাট হিসাবে রাখার জন্য এখনও একটি সমস্যা, কারণ তাদের ব্যবহারের আগে প্রাক প্রসেসিং প্রয়োজন।
25'11 এ 11:44 এ Orbling

আমি সম্মত হয়েছি এবং জাভাতে একটি জেএসএন পার্সার লিখেছি, এটি www.SoftwareMonkey.org এ উপলব্ধ রয়েছে যা ঠিক এটি করে।
লরেন্স ডল

2
আমি মনে করি সত্ত্বেও, জেএসএনকে প্রসারিত করা ভাল ধারণা নয় (একে অন্যরকম এক্সচেঞ্জের বিন্যাস না বলে): স্ট্রিংয়ের মধ্যে "মন্তব্যগুলি" উপেক্ষা করার বিষয়টি নিশ্চিত করুন।
f

27
"... ওয়ান লাইনার হবে" উম্ম, না, আসলে, জেএসএন কোনও নিয়মিত ব্যাকরণ নয় যেখানে নিয়মিত এক্সপ্রেশনটি সহজেই / * এর জোড়া মিলে যায়। কোনও স্ট্রিংয়ের ভিতরে একটি / * উপস্থিত হয়েছে কিনা (এবং এটি উপেক্ষা করুন), বা যদি এটি পালিয়ে গেছে (এবং এটি উপেক্ষা করুন) ইত্যাদি আপনার ফাইলটি পার্স করতে হবে এবং আপনার উত্তরটি অপ্রয়োজনীয় কারণ আপনি সরবরাহ করার চেয়ে কেবল অনুমান (ভুলভাবে) করছেন because কোন সমাধান।
কাইল সিম্পসন

1
কি কাইল-সিম্পসন বলেছিলেন। এছাড়াও, তিনি অ্যাডহক রেজেক্সপসের বিকল্প হিসাবে JSON.minify ব্যবহার সম্পর্কে নিজের উত্তরটিতে পাঠকদের সরাসরি নির্দেশ দিতে খুব সাধারণ নন। এটা কর, এই না।
টুলবার

36

যদি আপনি এএসপি.এনইটি সহ নিউটোনসফট.জসন লাইব্রেরিটি পড়তে / ডিসেরায়ালাইজ করতে ব্যবহার করেন তবে আপনি জেএসএন সামগ্রীতে মন্তব্যগুলি ব্যবহার করতে পারেন:

// "নাম": "স্ট্রিং"

//"আমি করি নি

অথবা

/* এটা একটা

মন্তব্য উদাহরণ * /

PS: একক লাইন মন্তব্যগুলি কেবল নিউটনসফ্ট জসনের 6+ সংস্করণে সমর্থিত।

বাক্সের বাইরে চিন্তা করতে পারে না এমন লোকদের জন্য অতিরিক্ত নোট: আমি তৈরি একটি এএসপি.নেট ওয়েব অ্যাপ্লিকেশনটিতে বেসিক সেটিংসের জন্য আমি JSON ফর্ম্যাটটি ব্যবহার করি। আমি ফাইলটি পড়েছি, নিউটোনসফট লাইব্রেরির সাথে সেটিংস অবজেক্টে রূপান্তর করি এবং যখন প্রয়োজন হয় তখন এটি ব্যবহার করি।

আমি নিজেই JSON ফাইলে প্রতিটি স্বতন্ত্র সেটিং সম্পর্কে মন্তব্য লেখা পছন্দ করি এবং যতক্ষণ আমি ব্যবহার করি লাইব্রেরিটি ঠিক আছে ততক্ষণ আমি JSON ফর্ম্যাটটির অখণ্ডতার বিষয়ে যত্ন নিই না।

আমি মনে করি এটি একটি পৃথক 'সেটিংস তৈরি করার চেয়ে' ব্যবহার করা / বোঝার সহজ উপায় .আপনিআডএমই 'ফাইল এবং এতে সেটিংস ব্যাখ্যা করার জন্য।

এই ধরণের ব্যবহারে আপনার যদি সমস্যা হয়; দুঃখিত, জিনের প্রদীপ বাইরে আছে। লোকেরা JSON ফর্ম্যাটের জন্য অন্যান্য ব্যবহারগুলি সন্ধান করবে এবং এটি সম্পর্কে আপনি কিছুই করতে পারবেন না।


কারও কারও কাছে কেন একটি সত্য কথা বলার সমস্যা রয়েছে তা বোঝা শক্ত।
ডিভিডিএমএন

আমি ধরে নেব যে কেউ ব্যাতিক্রম গ্রহণ করেছে কারণ উপরেরটি আর JSON নয়, বা অবৈধ JSON। সম্ভবত একটি সংক্ষিপ্ত অস্বীকৃতি যুক্ত করা সন্তুষ্ট হবে।
টুলবার

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

পয়েন্টটি মন্তব্য সহ একটি ফাইল জেএসওন নয় এবং অনেক জেএসওএন লাইব্রেরি দ্বারা পার্স করা ব্যর্থ হবে। আপনার নিজের প্রোগ্রামে আপনি যা খুশি করতে নির্দ্বিধায় করুন তবে মন্তব্য সহ একটি ফাইল জেএসওএন নয়। আপনি যদি এটি দাবি করেন তবে লোকেরা তাদের ভাষা / পছন্দের লাইব্রেরি দিয়ে এটি পার্স করার চেষ্টা করবে এবং এটি ব্যর্থ হবে। এটি XML- এ কোণ বন্ধনীগুলির পরিবর্তে বর্গাকার বন্ধনী ব্যবহার করতে পারেন কিনা তা জিজ্ঞাসার মতো। আপনি যা চান তা করতে পারেন তবে এটি আর এক্সএমএল হবে না।
gman

32

JSON এর পিছনে ধারণাটি হ'ল অ্যাপ্লিকেশনগুলির মধ্যে সহজ ডেটা এক্সচেঞ্জ সরবরাহ করা। এগুলি সাধারণত ওয়েব ভিত্তিক এবং ভাষাটি জাভাস্ক্রিপ্ট।

এটি তথ্যের মতো মন্তব্যের জন্য সত্যই অনুমোদন দেয় না, তবে ডেটাতে নাম / মান জোড়ার একটি হিসাবে একটি মন্তব্য পাস করা অবশ্যই কাজ করবে, যদিও সেই ডেটা স্পষ্টভাবে এড়িয়ে যাওয়া বা পার্সিং কোড দ্বারা বিশেষত পরিচালনা করা দরকার।

যা কিছু বলেছিল, JSON ফাইলে প্রচলিত অর্থে মন্তব্য থাকতে হবে এমন উদ্দেশ্য নয়। এটি কেবল তথ্য হওয়া উচিত।

কটাক্ষপাত আছে তাদেরকে JSON ওয়েবসাইট আরো বিস্তারিত জন্য।


17
এটি সত্য যে জেএসএন ফর্ম্যাটে কোনও মন্তব্য নেই। ব্যক্তিগতভাবে আমি মনে করি এটি একটি উল্লেখযোগ্য ভুল - এক্সএমএল সহ মেটাডেটা (ডেটা নয়) হিসাবে মন্তব্য করার ক্ষমতা একটি খুব দরকারী জিনিস। জেএসএন স্পেসিফিকেশনের পূর্ববর্তী খসড়া সংস্করণগুলিতে মন্তব্যগুলি অন্তর্ভুক্ত ছিল তবে কিছু কারণে সেগুলি বাদ দেওয়া হয়েছিল। : - /
স্টেক্সম্যান

4
@ স্টেক্সম্যান এগুলি একেবারে বাদ দেওয়া হয়েছিল কারণ লোকেরা তাদের মেটাডেটা হিসাবে ব্যবহার শুরু করে। ক্রকফোর্ড বলেছিলেন যে এটি ফর্ম্যাটটি কীভাবে নকশা করা হয়েছিল তার সামঞ্জস্যতা ভেঙে দিয়েছে এবং আমি সম্মত: আপনি যদি মেটাটাটা চান, তবে কেন এটিকে আসল ডেটা হিসাবে অন্তর্ভুক্ত করবেন না? এভাবে পার্স করা আরও সহজ।
কামিলো মার্টিন

6
মেটাডেটা মেটাটাটা কনস্ট্রাক্টসের অন্তর্গত (যেমন এইচটিএমএল <মেটা> ট্যাগ), কোনও মন্তব্য নয়। মেটাডাটার জন্য মন্তব্যগুলির আপত্তিজনক হ'ল কেবল এমন একটি হ্যাক ব্যবহৃত যেখানে সত্যিকারের মেটাডেটা নির্মাণের উপস্থিতি নেই।
মার্নেন লাইবো-কোসার

এটিকে বাদ দেওয়ার কারণ হ'ল: মেটাডেটা হিসাবে ব্যবহৃত মন্তব্যগুলি আন্তঃব্যবযোগিতা ভঙ্গ করবে। আপনার কেবলমাত্র আপনার মেটা-ডেটা জেএসএন হিসাবে সংরক্ষণ করতে হবে।
দারুন

1
এই উত্তরটি আরও ভাল লিখিত, উচ্চতর উত্তোলিত উত্তরগুলির সাথে অপ্রয়োজনীয়, যা মূলত একই জিনিসটি বলে, যদিও এটি আগে লেখা হয়েছিল। সিস্ট লা ভি।
টুলবার

29

আমি কনফিগারেশন ফাইলগুলির জন্য এটির মুখোমুখি হয়েছি। আমি এক্সএমএল (ভার্বোস, গ্রাফিকালি, কুরুচিপূর্ণ, পড়া শক্ত) বা "আইএনআই" ফর্ম্যাট (কোনও শ্রেণিবদ্ধ, বাস্তব মান নেই, ইত্যাদি) বা জাভা "সম্পত্তি" বিন্যাস (যেমন .ini) ব্যবহার করতে চাই না।

জেএসএন তারা যা করতে পারে তা করতে পারে তবে এটি কম ভার্বোস এবং বেশি মানুষের পাঠযোগ্য - এবং পার্সারগুলি অনেক ভাষায় সহজ এবং সর্বব্যাপী। এটি কেবলমাত্র ডেটা গাছ। তবে ব্যান্ড-অফ-ব্যান্ড মন্তব্যগুলি "ডিফল্ট" কনফিগারেশন এবং এর মতো ডকুমেন্ট করার জন্য একটি প্রয়োজনীয়তা। কনফিগারেশনগুলি কখনই "সম্পূর্ণ ডকুমেন্টস" হয় না, তবে সংরক্ষণ করা ডেটার গাছ যেগুলি যখন প্রয়োজন হয় তখন মানুষের পাঠযোগ্য হতে পারে।

আমার ধারণা যে "#": "comment"কোনওটি "বৈধ" JSON এর জন্য ব্যবহার করতে পারে ।


4
কনফিগারেশন ফাইলগুলির জন্য, আমি YSL প্রস্তাব করব, JSON নয়। এটি (প্রায়) জেএসএনের একটি আরও শক্তিশালী সুপারস্টার, তবে মন্তব্য সহ আরও বেশি পঠনযোগ্য নির্মাণকে সমর্থন করে।
মার্নেন লাইবো-কোসার 21

1
আপনারা কী ভাবেন যে জেএসসনের তুলনায় বাক্স থেকে YAML কে কতগুলি ভাষা সমর্থন করে?
মিমি

@ হামিদাম এক ডজনেরও বেশি ভাষা ইয়ামল: ইয়ামল.আর.ওগকে সমর্থন করে - তবে তৃতীয় পক্ষের লাইব্রেরি নির্ভরতার প্রয়োজন ছাড়াই আপনি কতজন অন্তর্নির্মিত সমর্থন সমর্থন করেছেন তা জিজ্ঞাসা করা ঠিক আছে। দেখে মনে হচ্ছে রুবি ১.৯.২ করেন। অন্যের কথা কেউ জানেন? এবং ডিফল্টরূপে কোন ভাষা ভাষা json সমর্থন করে?
nealmcb

5
ওয়াইএএমএল ইন্টারপ একটি মিথ্যা: স্ট্যাকওভারফ্লো . com / জিজ্ঞাসা / ৪৫০৩৯৯/২ । যদি আপনার প্রবৃত্তিটি কনফিগারেশন ফাইলগুলির জন্য JSON ব্যবহার করতে থাকে তবে এটি অনুসরণ করুন।
টুলবার ভাল

এটি পুরানো, তবে আমি বিশ্বাস করি যে # ব্যবহার করা ভাল ধারণা নয়। জাসন একটি জাভাস্ক্রিপ্ট লিটারালালের বাক্যবিন্যাসের নিকটে। জাভাস্ক্রিপ্ট 2 ধরণের মন্তব্য সমর্থন করে: // এবং / * ... * / আমি আপনি যদি থাকতাম আমি এই বা উভয় ধরণের মন্তব্যে আটকে থাকতাম।
পাস্কাল গণয়ে

28

জেএসওএন মন্তব্যগুলিকে স্থানীয়ভাবে সমর্থন করে না, তবে আপনি মন্তব্যগুলি সরিয়ে নিতে আপনার নিজের ডিকোডার বা কমপক্ষে প্রিপ্রোসেসর করতে পারেন, এটি পুরোপুরি ঠিক আছে (যতক্ষণ না আপনি কেবল মন্তব্যগুলিকে উপেক্ষা করেন এবং আপনার অ্যাপ্লিকেশনটিকে কীভাবে JSON ডেটা প্রক্রিয়াকরণ করা উচিত তা গাইড করার জন্য সেগুলি ব্যবহার করবেন না) )।

জেএসএনের কোনও মন্তব্য নেই। একটি জেএসএন এনকোডারকে মন্তব্য আউটপুট করা উচিত নয়। একটি জেএসওন ডিকোডার আমার মতামত গ্রহণ এবং অগ্রাহ্য করতে পারে।

মন্তব্যগুলি কখনই অর্থবহ কিছু প্রেরণে ব্যবহার করা উচিত নয়। JSON এর জন্য এটিই।

সিএফ: ডগলাস ক্রকফোর্ড, জেএসএন অনুমানের লেখক


4
ক্রকফোর্ড পরে লিখেছেন: "ধরুন আপনি কনফিগারেশন ফাইলগুলি রাখতে JSON ব্যবহার করছেন, যা আপনি মন্তব্য করতে চান ot এগিয়ে যান এবং আপনার পছন্দ মতো সমস্ত মন্তব্য allোকান। তারপরে এটি আপনার জেএসএন পার্সারের হাতে দেওয়ার আগে এটি জেএসমিনের মাধ্যমে পাইপ করুন" " আরও তথ্যের জন্য JSON.minify সম্পর্কে @ কাইল-সিম্পসনের উত্তর দেখুন।
টুলবার

28

এটি আপনার JSON লাইব্রেরির উপর নির্ভর করে। জসন.এনইটি জাভাস্ক্রিপ্ট-স্টাইলের মন্তব্যগুলিকে সমর্থন করে /* commment */

দেখুন অন্য স্ট্যাক ওভারফ্লো প্রশ্ন


এবং আমি বিশ্বাস করি যে এই কারণেই আমি এই এএসপি.নেট ভিএনেক্সট প্রিভিউ পৃষ্ঠাতে (প্যাকেজ.জসনের অধীনে) একটি স্ক্রিনশটটিতে একটি মন্তব্য দেখতে পাচ্ছি: ব্লগস.এমএসএনএন / বি / ওয়েবেদেব / আর্কাইভ / 2014 / 06 / 03/… যদিও আমার কাছে নেই এখনও অনুমান মধ্যে কিছুই খুঁজে পাওয়া যায় নি।
ওয়েবএক্সএল

27

JSON কনফিগারেশন ফাইল এবং অন্যান্য স্থানীয় ব্যবহারের জন্য প্রচুর অর্থবোধ করে কারণ এটি সর্বব্যাপী এবং এটি XML এর চেয়ে অনেক সহজ।

জনগণ যদি ডেটা যোগাযোগের সময় (বৈধ থাকুক বা না থাকুক) জেএসএন-তে মন্তব্য করার বিরুদ্ধে দৃ strong় কারণ থাকতে পারে, তবে সম্ভবত জেএসএন দুটি ভাগে বিভক্ত হতে পারে:

  • JSON-COM: তারে JSON, বা JSON ডেটা যোগাযোগ করার সময় প্রযোজ্য বিধিগুলি।
  • JSON-DOC: JSON নথি, বা ফাইলগুলিতে বা স্থানীয়ভাবে JSON। নিয়ম যা বৈধ JSON নথির সংজ্ঞা দেয়।

JSON-DOC মন্তব্যগুলির অনুমতি দেবে, এবং অন্যান্য সামান্য পার্থক্য যেমন হোয়াইটস্পেস পরিচালনা করার মতো উপস্থিত থাকতে পারে। পার্সাররা সহজেই একটি স্পেস থেকে অন্য বিশেষে রূপান্তর করতে পারে।

এই বিষয়গুলিতে ডগলাস ক্রকফোর্ডের মন্তব্য সম্পর্কে শ্রদ্ধা সহ (@ আর্টুর সিজ্জা প্রসঙ্গীত)

মনে করুন আপনি JSON ব্যবহার করছেন কনফিগারেশন ফাইলগুলি রাখতে, যা আপনি টীকাতে চান। এগিয়ে যান এবং আপনার পছন্দ মত সমস্ত মন্তব্য .োকান। তারপরে এটিটিকে আপনার জেএসএন পার্সারের হাতে দেওয়ার আগে এটি জেএসমিনের মাধ্যমে পাইপ করুন।

আমরা জেনেরিক কনফিগারেশন ফাইল ইস্যু (ক্রস ল্যাঙ্গুয়েজ / প্ল্যাটফর্ম) সম্পর্কে কথা বলছি, এবং তিনি জেএসের নির্দিষ্ট ইউটিলিটি দিয়ে উত্তর দিচ্ছেন!

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

অন্য ইস্যু আন্তঃক্রিয়াশীলতা ility ধরুন আপনার কাছে একটি লাইব্রেরি বা এপিআই বা কোনও ধরণের সাবসিস্টেম রয়েছে যার সাথে কিছু কনফিগার বা ডেটা ফাইল যুক্ত রয়েছে। এবং এই সাবসিস্টেমটি বিভিন্ন ভাষা থেকে অ্যাক্সেস করতে হবে। তারপরে কি আপনি লোকদের বলার বিষয়ে যাচ্ছেন: যাইহোক, পার্সারে যাওয়ার আগে JSON ফাইলগুলি থেকে মন্তব্যগুলি সরিয়ে ফেলা ভুলবেন না!


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


24

আপনি যদি JSON5 ব্যবহার করেন তবে আপনি মন্তব্যগুলি অন্তর্ভুক্ত করতে পারেন।


জেএসওএন 5 জেএসএনের একটি প্রস্তাবিত বর্ধিতাংশ যা মানুষের হাতে হাতে লেখা এবং বজায় রাখা সহজ করে তোলে s এটি ECMAScript 5 থেকে কিছু ন্যূনতম সিনট্যাক্স বৈশিষ্ট্য যুক্ত করে এটি করে।


5
আপনি একটি উদাহরণ যোগ করতে পারেন? তাহলে আপনার অবশ্যই সেই অতিরিক্ত অক্ষরগুলির প্রয়োজন হতে পারে।
dgilperez

6
এটি একটি সত্য উত্তর প্রদানের জন্য এসও নির্দেশিকা দ্বারা প্রয়োজনীয়। কেবলমাত্র লিঙ্ক-উত্তরই পছন্দসই নয়। আপনি নির্দেশিকা পরীক্ষা করতে পারবেন stackoverflow.com/help/how-to-answer
dgilperez

2
এসও এর ব্যবহারকারীরা দ্বারা সংযত হয়। তার অর্থ আমি যদি উত্তরটি দিতে পারি তবে আমার কাছে যদি একইভাবে থাকে তবে আমি যদি আপনার নির্দেশনা অনুসরণ না করে তবে আপনার মন্তব্য করতে পারি। এসও এইভাবে একটি দুর্দান্ত সংস্থান হতে পারে।
ডিজিলেপ্রেজ

22

দোজো টুলকিট জাভাস্ক্রিপ্ট টুলকিট (কমপক্ষে 1.4 সংস্করণ হিসাবে), আপনাকে আপনার জেএসএন-তে মন্তব্য অন্তর্ভুক্ত করতে দেয়। মন্তব্য /* */ফর্ম্যাট হতে পারে । ডোজো টুলকিট dojo.xhrGet()কলটির মাধ্যমে JSON গ্রাস করে ।

অন্যান্য জাভাস্ক্রিপ্ট টুলকিটগুলি একইভাবে কাজ করতে পারে।

চূড়ান্ত বিকল্পটি বেছে নেওয়ার আগে বিকল্প ডাটা স্ট্রাকচার (বা এমনকি ডেটা তালিকাগুলি) নিয়ে পরীক্ষা করার সময় এটি সহায়ক হতে পারে।


4
না এটা না। জেএসএনের কোনও মন্তব্য নেই। আপনি যদি মন্তব্য সহ আপনার জেএসওএনটি বেনিফিট করতে চান, পার্সিং বা প্রেরণের আগে এটিকে ছোট করুন। এটি প্রাপকের দায়িত্ব হওয়া উচিত নয়।
টুলবার

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

1
এটি মন্তব্য করা ভাল খারাপ ভুডো, এবং এইভাবে অবৈধ জেএসওএন, যা dojo.xhrGet()স্পষ্টভাবে গ্রহণ করে উত্সাহ দেয়।
টুলবার

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

20

জেএসএন কোনও ফ্রেমযুক্ত প্রোটোকল নয় । এটি একটি ভাষা মুক্ত বিন্যাস । সুতরাং একটি মন্তব্যের ফর্ম্যাটটি JSON এর জন্য সংজ্ঞায়িত করা হয়নি।

অনেক লোক যেমন পরামর্শ দিয়েছেন, কিছু কৌশল আছে, উদাহরণস্বরূপ, সদৃশ কী বা _commentআপনি ব্যবহার করতে পারেন এমন একটি নির্দিষ্ট কী । এটা আপনার উপর নির্ভর করছে.


18

আপনি জেএসএনপি-তে মন্তব্য করতে পারেন , তবে খাঁটি জেএসএনে নয়। আমি হাইকার্টস থেকে এই উদাহরণ দিয়ে আমার প্রোগ্রামটি কাজ করার চেষ্টা করতে মাত্র এক ঘন্টা ব্যয় করেছি: http://www.highcharts.com/sample/data/jsonp.php?filename=aapl-c.json&callback=?

আপনি যদি লিঙ্কটি অনুসরণ করেন তবে আপনি দেখতে পাবেন

?(/* AAPL historical OHLC data from the Google Finance API */
[
/* May 2006 */
[1147651200000,67.79],
[1147737600000,64.98],
...
[1368057600000,456.77],
[1368144000000,452.97]
]);

যেহেতু আমার স্থানীয় ফোল্ডারে আমার অনুরূপ ফাইল ছিল, সেম-উত্স নীতি নিয়ে কোনও সমস্যা ছিল না , তাই আমি খাঁটি জেএসএন ব্যবহার করার সিদ্ধান্ত নিয়েছিলাম ... এবং অবশ্যই,$.getJSON মন্তবীর কারণে নিঃশব্দে ব্যর্থ হয়েছিল।

শেষ পর্যন্ত আমি ঠিক ঠিক উপরের ঠিকানায় একটি ম্যানুয়াল এইচটিটিপি অনুরোধ প্রেরণ করেছি এবং বুঝতে পেরেছি যে বিষয়বস্তুর text/javascriptধরণটি ভাল, জেএসওএনপি খাঁটি জাভাস্ক্রিপ্ট ফেরত দেয়। এই ক্ষেত্রে মতামত অনুমোদিত । তবে আমার অ্যাপ্লিকেশনটি সামগ্রী-প্রকারে ফিরে এসেছে application/json, সুতরাং আমাকে মন্তব্যগুলি সরিয়ে ফেলতে হয়েছিল।


17

এটি একটি "ক্যান আপনি" প্রশ্ন। এবং এখানে একটি "হ্যাঁ" উত্তর।

না, আপনার জাসন এনকোডিংয়ের পার্শ্ব চ্যানেল ডেটা স্টাফ করার জন্য সদৃশ বস্তুর সদস্যদের ব্যবহার করা উচিত নয়। ( আরএফসিতে "একটি সামগ্রীর মধ্যে নামগুলি অনন্য হওয়া উচিত" দেখুন )।

এবং হ্যাঁ, আপনি JSON এর আশেপাশে মন্তব্যগুলি সন্নিবেশ করতে পারেন , যা পার্স করতে পারেন।

তবে আপনি যদি কোনও বৈধ JSON- এ স্বেচ্ছাসেবী পার্শ্ব-চ্যানেল ডেটা সন্নিবেশ এবং নিষ্কাশন করার কোনও উপায় চান তবে এখানে একটি উত্তর দেওয়া আছে। আমরা একটি JSON এনকোডিংয়ে ডেটার অ-অনন্য প্রতিনিধিত্বের সুবিধা গ্রহণ করি। এই অনুমতি দেওয়া হয় * অধীনে বোঝায় যা RFC "হোয়াইটস্পেস আগে বা ছয় কাঠামোগত অক্ষরের কোনো পর অনুমতি দেওয়া হয়" এর বিভাগে দুই হবে।

* আরএফসি কেবলমাত্র "ছয়টি কাঠামোগত অক্ষরের কোনও বা তার আগে বা পরে শ্বেত স্পেসের অনুমতি পেয়েছে", স্ট্রিং, সংখ্যা, "ভুয়া", "সত্য" এবং "নাল" উল্লেখ করে না। এই প্রয়োগটি সমস্ত বাস্তবায়নে উপেক্ষা করা হয়।


প্রথমে আপনার JSON এটিকে হ্রাস করে আধ্যাত্মিককরণ করুন:

$jsonMin = json_encode(json_decode($json));

তারপরে বাইনারিতে আপনার মন্তব্য এনকোড করুন:

$hex = unpack('H*', $comment);
$commentBinary = base_convert($hex[1], 16, 2);

তারপরে আপনার বাইনারি স্ট্যাগ করুন:

$steg = str_replace('0', ' ', $commentBinary);
$steg = str_replace('1', "\t", $steg);

আপনার আউটপুট এখানে:

$jsonWithComment = $steg . $jsonMin;

1
আরএফসি কেবলমাত্র "ছয়টি কাঠামোগত অক্ষরের কোনও বা তার আগে বা পরে শ্বেত স্পেসের অনুমতি পেয়েছে", স্ট্রিং, সংখ্যা, "ভুয়া", "সত্য", "নাল" উল্লেখ করে না। এই প্রয়োগটি সমস্ত বাস্তবায়নে উপেক্ষা করা হয়।
উইলিয়াম এন্টারিকেন

1
বৃহত্তর মন্তব্যের ঘনত্বের জন্য, আপনি কী আপনার মন্তব্যটি তিন্নি তে এনকোড করতে পারবেন না এবং এটিকে স্টিগ করতে স্থান, ট্যাব এবং নিউলাইন ব্যবহার করতে পারেন?
ক্লেয়ার নিলসন

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

ভাল রেফারেন্স। সদৃশ কীগুলি ব্যবহার করার বিরুদ্ধে আরও ভাল যুক্তি হ'ল স্ট্যান্ডার্ডের উক্তি "যখন কোনও বস্তুর মধ্যে নামগুলি অনন্য নয়, তখন এমন একটি সফ্টওয়্যার ব্যবহার করে যা অনুমানযোগ্য is" এছাড়াও এখন আমি বুঝতে পেরেছি কেন স্ট্যান্ডার্ডটি "অনন্য হওয়া উচিত নয়" এটি বৈধতা প্রদানকারীকে আরও সহজ করে তোলে, এটির জন্য কেবল [এবং track ট্র্যাক করা দরকার, কোন কীগুলি ইতিমধ্যে ব্যবহৃত হয়েছিল তা জানতে হবে না।
উইলিয়াম এন্টারিকেন

16

অস্বীকৃতি: এটি কেবলমাত্র

মন্তব্য যুক্ত করার এবং স্পেকের মধ্যেই থাকার কোনও উপায় রয়েছে (কোনও অতিরিক্ত পার্সারের প্রয়োজন নেই)। এটি কোনও ধরণের পার্সিং ছাড়াই মানব-পঠনযোগ্য মন্তব্যে পরিণত হবে না।

আপনি নিম্নলিখিত অপব্যবহার করতে পারে:

কোনও টোকেনের আগে বা পরে তুচ্ছ সাদা জায়গার অনুমতি দেওয়া হয়। হোয়াইটস্পেস নীচের কোড পয়েন্টগুলির এক বা একাধিক ক্রমের কোনও ক্রম: অক্ষর ট্যাবুলেশন (ইউ + 0009), লাইন ফিড (ইউ + 000 এ), ক্যারিজ রিটার্ন (ইউ + 000 ডি), এবং স্থান (ইউ + 0020)।

একটি হ্যাকি উপায়ে, আপনি একটি মন্তব্য যোগ করতে এটি অপব্যবহার করতে পারেন। উদাহরণস্বরূপ: আপনার মন্তব্যটি একটি ট্যাব দিয়ে শুরু করুন এবং শেষ করুন। মন্তব্যটি বেস 3 এ এনকোড করুন এবং তাদের উপস্থাপনের জন্য অন্যান্য সাদা স্থানের অক্ষর ব্যবহার করুন। এই ক্ষেত্রে.

010212 010202 011000 011000 011010 001012 010122 010121 011021 010202 001012 011022 010212 011020 010202 010202

(hello base three এএসসিআইআই তে) তবে 0 টি ব্যবহারের জায়গার পরিবর্তে 1 টি ব্যবহারের জন্য লাইন ফিড এবং 2 ব্যবহারের জন্য ক্যারেজ রিটার্ন।

এটি আপনাকে কেবল প্রচুর অপঠনযোগ্য শ্বেতস্পেসের সাথে ছেড়ে দেবে (যদি না আপনি ফ্লাইতে এনকোড / ডিকোড করতে কোনও আইডিই প্লাগইন না করেন)।

আমি এমনকি কখনও এটি চেষ্টা করেও দেখিনি, সুস্পষ্ট কারণে এবং আপনারও উচিত নয়।


12

আমরা strip-json-commentsআমাদের প্রকল্পের জন্য ব্যবহার করছি। এটি এমন কিছু সমর্থন করে:

/*
 * Description 
*/
{
    // rainbows
    "unicorn": /* ❤ */ "cake"
}

কেবল npm install --save strip-json-commentsএটির মতো ইনস্টল এবং ব্যবহার করুন:

var strip_json_comments = require('strip-json-comments')
var json = '{/*rainbows*/"unicorn":"cake"}';
JSON.parse(strip_json_comments(json));
//=> {unicorn: 'cake'}

মনে রাখবেন যে jsonএই স্বতন্ত্র মন্তব্যগুলিকে অন্তর্ভুক্ত করার পরে এটি কোনও বৈধ JSON নয়।
রায় প্রিন্স

12

আমার ক্ষেত্রে, JSON কাঠামোর আউটপুট পূর্বে আমার ডিবাগ উদ্দেশ্যে মন্তব্যগুলি ব্যবহার করা উচিত। তাই আমি ক্লায়েন্টকে ব্রেক এড়াতে, এইচটিটিপি শিরোনামে ডিবাগ তথ্য ব্যবহার করার সিদ্ধান্ত নিয়েছি:

header("My-Json-Comment: Yes, I know it's a workaround ;-) ");

এখানে চিত্র বিবরণ লিখুন


12

JSON মন্তব্যগুলি অনুমতি দেয় না, প্রতি সে। যুক্তিটি সম্পূর্ণ নির্বোধ, কারণ আপনি মন্তব্য তৈরি করতে নিজেই JSON ব্যবহার করতে পারেন , যা যুক্তি সম্পূর্ণরূপে মেনে চলে, এবং ঠিক একই ফলাফল এবং সম্ভাব্য ইস্যুগুলির জন্য পার্সার ডেটা স্পেস লোড করে না , যেমন তারা হ'ল: জেএসএন মন্তব্য সহ ফাইল।

যদি আপনি মন্তব্যগুলিতে রাখার চেষ্টা করেন (ব্যবহার //বা /* */বা #উদাহরণস্বরূপ), তবে কিছু পার্সার ব্যর্থ হবে কারণ এটি JSON নির্দিষ্টকরণের মধ্যে কঠোরভাবে নয়। সুতরাং আপনার কখনই এটি করা উচিত নয়

উদাহরণস্বরূপ, এখানে আমার চিত্রের ম্যানিপুলেশন সিস্টেমটি চিত্র সম্পর্কিত স্বরলিপিগুলি এবং সেগুলি সম্পর্কিত (নীচে) কিছু প্রাথমিক বিন্যাসিত (মন্তব্য) তথ্য সংরক্ষণ করেছে:

{
    "Notations": [
        {
            "anchorX": 333,
            "anchorY": 265,
            "areaMode": "Ellipse",
            "extentX": 356,
            "extentY": 294,
            "opacity": 0.5,
            "text": "Elliptical area on top",
            "textX": 333,
            "textY": 265,
            "title": "Notation 1"
        },
        {
            "anchorX": 87,
            "anchorY": 385,
            "areaMode": "Rectangle",
            "extentX": 109,
            "extentY": 412,
            "opacity": 0.5,
            "text": "Rect area\non bottom",
            "textX": 98,
            "textY": 385,
            "title": "Notation 2"
        },
        {
            "anchorX": 69,
            "anchorY": 104,
            "areaMode": "Polygon",
            "extentX": 102,
            "extentY": 136,
            "opacity": 0.5,
            "pointList": [
                {
                    "i": 0,
                    "x": 83,
                    "y": 104
                },
                {
                    "i": 1,
                    "x": 69,
                    "y": 136
                },
                {
                    "i": 2,
                    "x": 102,
                    "y": 132
                },
                {
                    "i": 3,
                    "x": 83,
                    "y": 104
                }
            ],
            "text": "Simple polygon",
            "textX": 85,
            "textY": 104,
            "title": "Notation 3"
        }
    ],
    "imageXW": 512,
    "imageYW": 512,
    "imageName": "lena_std.ato",
    "tinyDocs": {
        "c01": "JSON image notation data:",
        "c02": "-------------------------",
        "c03": "",
        "c04": "This data contains image notations and related area",
        "c05": "selection information that provides a means for an",
        "c06": "image gallery to display notations with elliptical,",
        "c07": "rectangular, polygonal or freehand area indications",
        "c08": "over an image displayed to a gallery visitor.",
        "c09": "",
        "c10": "X and Y positions are all in image space. The image",
        "c11": "resolution is given as imageXW and imageYW, which",
        "c12": "you use to scale the notation areas to their proper",
        "c13": "locations and sizes for your display of the image,",
        "c14": "regardless of scale.",
        "c15": "",
        "c16": "For Ellipses, anchor is the  center of the ellipse,",
        "c17": "and the extents are the X and Y radii respectively.",
        "c18": "",
        "c19": "For Rectangles, the anchor is the top left and the",
        "c20": "extents are the bottom right.",
        "c21": "",
        "c22": "For Freehand and Polygon area modes, the pointList",
        "c23": "contains a series of numbered XY points. If the area",
        "c24": "is closed, the last point will be the same as the",
        "c25": "first, so all you have to be concerned with is drawing",
        "c26": "lines between the points in the list. Anchor and extent",
        "c27": "are set to the top left and bottom right of the indicated",
        "c28": "region, and can be used as a simplistic rectangular",
        "c29": "detect for the mouse hover position over these types",
        "c30": "of areas.",
        "c31": "",
        "c32": "The textx and texty positions provide basic positioning",
        "c33": "information to help you locate the text information",
        "c34": "in a reasonable location associated with the area",
        "c35": "indication.",
        "c36": "",
        "c37": "Opacity is a value between 0 and 1, where .5 represents",
        "c38": "a 50% opaque backdrop and 1.0 represents a fully opaque",
        "c39": "backdrop. Recommendation is that regions be drawn",
        "c40": "only if the user hovers the pointer over the image,",
        "c41": "and that the text associated with the regions be drawn",
        "c42": "only if the user hovers the pointer over the indicated",
        "c43": "region."
    }
}

"যুক্তি" লিঙ্কটি নষ্ট হয়ে গেছে। এটির কোনও বর্তমান লিঙ্ক খুঁজে পাওয়ার কোনও সুযোগ?
ডন হ্যাচ

ডন, দুর্ভাগ্যক্রমে, গুগল পোস্ট করেছে এমন সোশ্যাল মিডিয়া সিস্টেমকে হত্যা করেছে; আসল পোস্টারটি সেখান থেকে কোথায় গেছে, সেখান থেকে আমার কোনও ধারণা নেই। আমি উপরের তথ্যটিতে লিঙ্কটি মেরে ফেলব, যদিও অস্পষ্টতা অপসারণ করা যায়। ধন্যবাদ।
fyngyrz

যুক্তি বোকামি নয় , এবং আপনি কেবল এটি প্রমাণ করেছেন। ট্যাগ হিসাবে মন্তব্য প্রয়োগ করা আন্তঃআকক্ষীয়তা সংরক্ষণ করে । ক্রোকফোর্ড ঠিক এই কারণেই মন্তব্যগুলিকে ট্যাগ হিসাবে বিশ্লেষণ করতে চেয়েছিলেন। এখন সমস্ত কিছুই কেবল একটি ট্যাগ এবং একইভাবে পার্স করা ।
ডোমিনিক সেরিসানো

যদি অনুমানটি বলে থাকে যে "# দিয়ে শুরু হওয়া একটি লাইন একটি মন্তব্য", তবে এটি সম্পূর্ণরূপে আন্তঃযোগযোগ্য হবে। এটি যেমন দাঁড়িয়েছে, মন্তব্যগুলি উভয়ই পার্সার স্পেস লোড করে, কারণ তারা মন্তব্য হিসাবে বোঝার পরিবর্তে বৈধ পার্সড আইটেম এবং এগুলি প্রতিটি জেএসএস ফাইলের অস্তিত্বের ক্ষেত্রে পৃথক হতে পারে। যদিও (উদাহরণস্বরূপ) যদি অনুমানটি "# দিয়ে শুরু করা লাইনগুলি মন্তব্য হয়" বলে থাকে, তবে পার্সাররা পার্সিং (দ্রুত) ছাড়াই এই লাইনগুলি এড়িয়ে যেতে পারে এবং পার্সার স্পেসটি লোড না করে (ভাল মেমরির ব্যবহার করতে পারে)) অভাব থেকে কোনও লাভ নেই all .জসনে মন্তব্যগুলি, কেবল ডাউনসাইডস।
fyngyrz

11

অংশে JSON আইটেমটি কাটাতে আমি "ডামি মন্তব্য" লাইনগুলি যুক্ত করছি:

{

"#############################" : "Part1",

"data1"             : "value1",
"data2"             : "value2",

"#############################" : "Part2",

"data4"             : "value3",
"data3"             : "value4"

}

15
আপনি JSON এ একটি INI ফাইল কাঠামো অনুকরণ করেছেন। দয়া করে আপনার গোল্ডেন হাতুড়িটি রাখুন।
আর্তুর সিজ্জাকা

4
আরএফসি বলছে "একটি অবজেক্টের মধ্যে নামগুলি অনন্য হওয়া উচিত"। : এছাড়াও যে মত উপরে তাদেরকে JSON পার্স করার সময় ত্রুটি হচ্ছে না এই ব্যক্তিকে দেখতে stackoverflow.com/questions/4912386/...
উইলিয়াম Entriken

আপনি যদি JSON কে বৈধতা দেওয়ার জন্য কোনও স্কিমা ব্যবহার করছেন, অতিরিক্ত ক্ষেত্রগুলির কারণে এটি ব্যর্থ হতে পারে।
গ্রেসডেনিস

1
আপনি যদি সত্যিই আপনার জেএসএন-তে মন্তব্য যুক্ত করার জন্য দৃ determined়সংকল্পবদ্ধ হন তবে এটি এরকম কিছু করা আরও বেশি অর্থবোধ করবে: { "comment-001":"This is where you do abc...", "comment-002":"This is where you do xyz..." } এটি নামটি অনন্য রাখে এবং আপনার পছন্দমতো স্ট্রিংয়ের মান যুক্ত করতে দেয়। এটি এখনও একটি জঞ্জাল, কারণ মন্তব্যগুলি আপনার জেএসএনের অংশ হওয়া উচিত নয়। অন্য বিকল্প হিসাবে, কেন আপনার জেএসএন এর আগে বা পরে মন্তব্যগুলি যুক্ত করবেন না, তবে এর মধ্যে নয়?
জাজিমভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.