একটি অ্যারে কি শীর্ষ স্তরের JSON- পাঠ্য হতে পারে?


উত্তর:


126

হ্যাঁ, একটি অ্যারে শীর্ষ স্তরের জেএসওএন-পাঠ্য হিসাবে বৈধ।

JSON সংজ্ঞায়িত করার জন্য এখানে তিনটি স্ট্যান্ডার্ড ডকুমেন্ট রয়েছে: আরএফসি 4627 , আরএফসি 7159 (যা আরএফসি 4627 কে আবদ্ধ করে), এবং ইসিএমএ -404 । তারা কোন শীর্ষ-স্তরের উপাদানগুলিকে মঞ্জুরি দেয় সেগুলির মধ্যে পৃথক হয় তবে সমস্তই কোনও বস্তু বা অ্যারেটিকে শীর্ষ স্তরের উপাদান হিসাবে মঞ্জুরি দেয়।

  • আরএফসি 4627: অবজেক্ট বা অ্যারে।
    "একটি জেএসওএন পাঠ্য সিরিয়ালযুক্ত বস্তু বা অ্যারে।"
  • আরএফসি 7159: কোনও JSON মান।
    "একটি জেএসএন পাঠ্য একটি ক্রমিক মান" "
  • ইসমা -404: কোনও জেএসওএন মান।
    "একটি জেএসওএন পাঠ্যটি ইউনিকোড কোড পয়েন্ট থেকে গঠিত টোকেনগুলির ক্রম যা জেএসওএন মান ব্যাকরণের সাথে সামঞ্জস্য করে।"

2
এই নতুন আরএফসি হিসাবে , "একটি জেএসওএন পাঠ্য টোকেনের অনুক্রম।
এন্টাক

63

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


11
হ্যাঁ, এটি একটি দুর্দান্ত উত্তরের বৈশিষ্ট্য - কেবল ওপিকে তারা কী জানতে চেয়েছিল তা নয়, তাদের কী জানা উচিত (তবে বুঝতে পারেনি)। প্রকৃতপক্ষে, জেএসএনের সাথে সংযুক্ত দুর্বলতার একটি গুচ্ছ রয়েছে যা জাভাস্ক্রিপ্ট হিসাবে পার্স করে, জেএসএন হাইজ্যাকিং এর একটি মাত্র উদাহরণ।
sleske

9
এফডাব্লুআইডাব্লু, জেএসএন হাইজ্যাক করা আধুনিক ব্রাউজারগুলির পক্ষে সমস্যা নয়
ফ্রাঙ্কলিন ইউ

4

এটি ECMAScript নির্দিষ্টকরণ থেকে।

জেএসএনটেক্সট:
    JSONValue

জেএসএনভ্যালু:
    JSONNullLiteral 
    JSONBooleanLiteral 
    JSONObject কে অবশ্যই 
    JSONArray 
    JSONString 
    JSONNumber

1
এটি সামান্য বিভ্রান্তিকর, কারণ, ইসকামাস্ক্রিপ্ট আপনাকে জেএসএন স্ট্রিংগুলি পার্স করার অনুমতি দেয় যা শীর্ষ স্তরের পাঠ্য নয়। আরএফসির মতে, "একটি জেএসওএন পাঠ্য সিরিয়ালযুক্ত বস্তু বা অ্যারে" "
ম্যাথু ফ্ল্যাশেন

@ ম্যাথেজ - অদ্ভুত, আমি অবাক হয়েছি যে ক্রোকফোর্ড সে সম্পর্কে কেমন অনুভূত হয়। কীভাবে তারা আরএফসি এবং ইসিএমএ-র মধ্যে পার্থক্য মিটবে?
কেওসপ্যান্ডিয়ন

3
আমি সবেমাত্র তাকিয়েছি এবং তাদের পার্থক্য সম্পর্কে সচেতন বলেছি। ECMAScript 5 §15.12 থেকে, "ECMAScript JSON ব্যাকরণের শীর্ষ স্তরের জেএসএনটেক্সট প্রযোজনায় কোনও JSONValue থাকতে পারে, আরএফসি 4627 দ্বারা বর্ণিত JSONObject বা JSONArray হিসাবে সীমাবদ্ধ না থেকে than" আমি জানি না আইইটিএফ আরএফসি পরিবর্তন করবে কিনা।
ম্যাথু ফ্ল্যাশেন

@ ম্যাথেজ - এর জন্য ধন্যবাদ, আমি ভীষণ বিভ্রান্ত হয়ে পড়ছিলাম। Json.org বিবরণ "JSON-পাঠ্য" আরো নিয়ন্ত্রণমূলক ধারণা উল্লেখ না এ সব , এবং তার তাৎপর্য সম্পর্কে অস্পষ্ট এর জন্য RFC এর ধরনের।
মেরেক

এই উত্তরটি ECMAScript সম্পর্কে, তবে প্রশ্নটি JSON সম্পর্কিত। যখন তারা (ইচ্ছাকৃতভাবে) একই চেহারা দেখায়, তারা বিভিন্ন চশমা
স্লেসকে

2

হ্যাঁ, এটি এখানে চেষ্টা করে দেখুন।

http://www.jsonlint.com/

এবং রাখা [{}]


3
এটি তার চেয়েও সহজ। রাখুন []এবং এটি যাচাই হবে।
sorpigal

লিঙ্কটি মারা গেছে, দয়া করে আপডেট করুন বা সরিয়ে দিন, এটি প্রায় লিঙ্ক-কেবল — উত্তর।
অ্যান্থন

1

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


শীর্ষ স্তরের উপাদান হিসাবে যে কোনও জেএসওএন মান একটি ইসমাস্ক্রিপ্ট পার্সারের পক্ষে গ্রহণযোগ্য , তবে কোনও (অনুগত) জেএসএন পার্সারের জন্য নয় - গুরুত্বপূর্ণ পার্থক্য।
স্লেসকে

এটি একটি আকর্ষণীয় পার্থক্য, তবে আপনি কী বলছেন তা আমি বুঝতে পারি না। "(অনুগত) জেএসএন পার্সার" এর সংজ্ঞা কী?
cdunn2001

1
ভাল, একটি JSON পার্সার JSON ব্যাকরণের জন্য পার্সার। জেএসএন জাভাস্ক্রিপ্টের মতো দেখতে দেখতে, এটি একটি পৃথক (অনেক সহজ) ব্যাকরণ। টুলস.ইএইটিএফ.আর.এইচটিএমএল / আরএফসি 7159 দেখুন , যা জেএসওএন ব্যাকরণ বর্ণনা করে। "অনুগত" এর অর্থ পার্সার আসলে ব্যাকরণ অনুসরণ করে (যা কোনও শালীন পার্সার উচিত)।
স্লেসকে

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