কোন অক্ষর একটি JSON কী নামে বৈধ / অবৈধ?


151

জাভাস্ক্রিপ্ট অবজেক্টস বা জেএসএন স্ট্রিংগুলির জন্য কী নামে কোনও নিষিদ্ধ অক্ষর রয়েছে? বা পালাতে হবে এমন চরিত্রগুলি?

আরও নির্দিষ্ট করে বলতে গেলে, আমি "$", "-" এবং মূল নামগুলিতে স্থান ব্যবহার করতে চাই।


আমি মনে করি আংশিকভাবে এই উত্তরটির সাথে আপনি যেভাবে এনকোডিং করছেন তা করতে হবে। উদাহরণস্বরূপ, ইউটিএফ 8 এর এএনএসআই বনাম বিভিন্ন অক্ষর রয়েছে has
invalidsyntax

4
obj['whatever']স্বরলিপিটি ব্যবহার করে আপনি জেএসে যে কোনও 'কী' চান তা ব্যবহার করতে পারেন । তবে শুধুমাত্র নিয়মিত বর্ণমালা কীগুলি obj.whateverসংস্করণটির জন্য ব্যবহার করা যেতে পারে ।
মার্ক বি

4
@ ইনভ্যালিডিসিনট্যাক্স: জেএসএন হ'ল সংজ্ঞা অনুসারে ইউনিকোড। এছাড়াও, এএনএসআই কোনও এনকোডিং নয়, এটি একটি চরিত্রের সেট, তাই তুলনাটি ইউনিকোড-বনাম-এএনএসআই হওয়া উচিত, ইউটিএফ-8-বনাম-এএনএসআই নয়।
মার্সেলো ক্যান্টোস

1
পুরানো আলোচনা তবে, এএসসিআইআই (লোকেরা প্রায়শই এএনএসআই দ্বারা উল্লেখ করে) হ'ল একটি এনকোডিং এবং তার উপরে এটি একটি চরিত্রের সেটও সংজ্ঞায়িত করে।
ত্রিনিদাদ

উত্তর:


167

কোন বৈধ স্ট্রিং একটি বৈধ কী। এটি "যতক্ষণ না আপনি এড়াতে পারবেন ততক্ষণ থাকতে পারে:

{"The \"meaning\" of life":42}

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


ধন্যবাদ! অন্য কোন চরিত্র যে পালাতে হবে? পছন্দ: বা; ?
ক্রিস্টোফ

11
না। জাভাস্ক্রিপ্টে পালানোর যা প্রয়োজন তা সাধারণত জেএসএনে প্রয়োজন। ঘোড়াটির মুখ থেকে এটি পাওয়ার পক্ষে সেরা, যদিও, জসন.আর.আরজে। শেষটি থেকে শেষ পর্যন্ত পুরো স্পেসটি পড়তে এক মিনিট সময় লাগে।
মার্সেলো ক্যান্টোস

3
এই ভাল উত্তর না imho। কোন ধরণের চরিত্রদের পালাতে হবে? কোন চরিত্রগুলি পালাতে পারে তবে পালাতে হবে না?
ড্যানিয়েল ডব্লিউ।

এর মধ্যে ইউনিকোড নাল চরিত্রের (U + 0000, ইউটিএফ -8-তে সাধারণ "নাল বাইট") ইত্যাদি অন্তর্ভুক্ত থাকলে কি কেউ স্পষ্ট করতে পারে? উভয় json.org এবং লিঙ্কিত অফিসিয়াল / আনুষ্ঠানিক ECMA স্পেসিফিকেশন পিডিএফ উভয়ই বোঝায় যে হ্যাঁ, সেগুলি JSON এ বৈধ, এমনকি তাদের আক্ষরিক আকারে (কেবল \u four-hex-digitsফর্ম নয়)।
mtraceur

1
@OutofOrbit আপনি কি এটি কেবল একটি টাইপযুক্ত অবজেক্টে লোড করতে পারেন?
মার্সেলো ক্যান্টোস

54

কোনও সমস্যা এড়াতে নিম্নলিখিত অক্ষরগুলি অবশ্যই JSON ডেটা এড়াতে হবে

'একক উদ্ধৃতি

”উদ্ধৃতি

ks ব্যাকস্ল্যাশ

সমস্ত নিয়ন্ত্রণ অক্ষর \ n \ t এর মতো

জেএসএন পার্সার আপনাকে জেএসওন মোকাবেলায় সহায়তা করতে পারে।

সম্পাদনা: ওপির লিঙ্কটি মারা যাওয়ার পরে এখানে একটি প্রতিস্থাপন জেএসএন পার্সার


5
হাই অরুণ, একক উদ্ধৃতি এড়াতে হবে না। প্রকৃতপক্ষে সেগুলি পালনের ফলে কঠোর জেএসএন পার্সারকে ব্যতিক্রম করতে হবে। Json.org এর স্ট্রিং বিভাগটি দেখুন অবশ্যই অবশ্যই আপনাকে JSON স্ট্রিংয়ের অভ্যন্তরে এড়াতে হবে (তবে জেএসএন নিজেই নয়)।
অ্যালেক্স কীস্মিত

5
@ অ্যালেক্সকে আপনি পুরোপুরি ঠিক বলেছেন! অরুণ, আপনি এই পরীক্ষা করতে পারবেন jsonlint.com তাদেরকে JSON পরীক্ষার দ্বারা { "singlequotetest": "something here isn\'t right"}বনাম{ "singlequotetest": "Fixing here what wasn't right"}
Adrien হউন

@ অরুন রানা - কোনও উদ্বেগ নেই।
অ্যালেক্স কীস্মিত

3
{"* ~ @ # $% ^ & * () _ + => <? /": "একটি বৈধ জাসন"}
অভি

45
{"🐶🔫": "not nice, but still valid json"}
মার্সেলো ক্যান্টোস

12

এটি উল্লেখযোগ্য যে সংখ্যার সাথে কীগুলি শুরু করার সময় বৈধ, এটি কিছু অযৌক্তিক সমস্যার কারণ হতে পারে।

উদাহরণ:

var testObject = {
    "1tile": "test value"
};
console.log(testObject.1tile); // fails, invalid syntax
console.log(testObject["1tile"]; // workaround

6
আমি সত্যিই আশা করি যে, মাইক্রোসফ্টের এই 2017/18 যুগে তারা যে সমস্ত ব্যথা ভোগ করেছে তার জন্য তারা আফসোস।
মনস্টো

1
তাদের মেট্রিক আইডি প্যারামিটারগুলি দেখুন: dev.applicationinsights.io/apiexplorer/… --- তাদের ক্ষেত্রের 15 বা 20 টিতে তাদের জেসন ক্ষেত্রের নামগুলিতে একাধিক ফরোয়ার্ড স্ল্যাশ রয়েছে। যদিও কর্নস দ্রবণটি নির্দিষ্ট ক্ষেত্রের জন্য কাজ করে, আমি এটি 1 টি সাব-ফিল্ডের জন্য কাজ করতে পারি বলে মনে হয় না। উদাহরণস্বরূপ, পরবর্তী বিন্দুটি আমার জন্য অপরিশোধিত ফেরত দেয়।
জন লুজাডার

আইই সেখানে উল্লেখ করা হয়েছে কেন? প্রতিটি ECMAScript প্রয়োগে সংখ্যার সাথে শনাক্তকারী শনাক্তকারীগুলি অবৈধ।
m93a

@ m93a আইই ইন্টারনেট এক্সপ্লোরারের সংক্ষিপ্ত বিবরণ হিসাবে নয় ... শব্দের খারাপ পছন্দ: /
কার্নস

এটি সেরা উত্তর হওয়া উচিত
জো ইলিয়া

7

ইউনিকোড কোডপয়েন্টস U + D800 থেকে U + DFFF এড়াতে হবে: তারা ইউনিকোডে অবৈধ কারণ তারা ইউটিএফ -16 সারোগেট জোড়ের জন্য সংরক্ষিত। কিছু জেএসএন এনকোডার / ডিকোডার তাদের ইউ + এফএফএফডি দিয়ে প্রতিস্থাপন করবে। উদাহরণস্বরূপ দেখুন কীভাবে গো ভাষা এবং এর JSON গ্রন্থাগারটি তাদের সাথে ডিল করে

সুতরাং "\ uD800" থেকে "\ uDFFF" এ একা এড়ানো (সারোগেট জোড়ায় নয়)

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