আপনি কি JSON অবজেক্টে একটি ট্রিলিং কমা ব্যবহার করতে পারেন?


392

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

s.append("[");
for (i = 0; i < 5; ++i) {
    s.appendF("\"%d\",", i);
}
s.append("]");

আপনি মত একটি স্ট্রিং প্রদান

[0,1,2,3,4,5,]

এটি কি অনুমোদিত?


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

5
জেফ যেমন বলেছিলেন, আমি মনে করি যে আপনাকে কিছুটা সময় ব্যয় করতে হবে এমন জিনিসগুলির একটি 'নোটবুক' হিসাবে এসও ব্যবহার করা পুরোপুরি ঠিক। অবশ্যই, এটি এই ধরণের আইটেমগুলির সহজ প্রান্তে রয়েছে, তবে আমি এখনও এটি যথাযথ বলে মনে করি, বিশেষত যেহেতু বিভিন্ন জাভাস্ক্রিপ্ট ইঞ্জিনগুলি এটিকে ভিন্নভাবে মোকাবেলা করবে।

6
আমি এটিও ভাবছিলাম, সুতরাং এটি একদম যুক্তিসঙ্গত প্রশ্ন।
হুজু

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

40
আকর্ষণীয়ভাবে (বা ভীতিজনকভাবে) আই 8 এ আমি সবেমাত্র পেয়েছি যা alert([1, 2, 3, ].length)"4" প্রদর্শিত হবে।
ড্যানিয়েল আরউইকার

উত্তর:


250

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

সাধারণভাবে আমি সমস্যাটি ঘুরিয়ে দেওয়ার চেষ্টা করি, এবং প্রকৃত মানটির আগে কমা যোগ করি, সুতরাং আপনি এমন কোড দিয়ে শেষ করেন যা দেখতে দেখতে:

s.append("[");
for (i = 0; i < 5; ++i) {
  if (i) s.append(","); // add the comma only if this isn't the first entry
  s.appendF("\"%d\"", i);
}
s.append("]");

লুপের জন্য আপনার অতিরিক্ত একটি লাইন কোড খুব ব্যয়বহুল ...

আমি যখন অন্য কোন ফর্মের অভিধান থেকে JSON এ কাঠামো আউটপুট করেছিলাম তখন অন্য বিকল্পটি ব্যবহার করা হ'ল প্রতিটি প্রবেশের পরে সর্বদা কমা যুক্ত করা (যেমন আপনি উপরের কাজটি করছেন) এবং তারপরে শেষের দিকে একটি ডামি এন্ট্রি যুক্ত করুন যা কমা পিছনে নেই (তবে এটি কেবল অলস; ->)।

দুর্ভাগ্যক্রমে একটি অ্যারের সাথে ভাল কাজ করে না।


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

47
এটি সত্যিই লজ্জাজনক যে ECMA5 ট্রেলিংগুলি নির্দিষ্ট করে, তবে জেএসওএন তা দেয় না।
ফ্ল্যাভরস্কেপ

4
হ্যাঁ, এই অতিরিক্ত লাইনটি খুব ব্যয়বহুল, তবে তবুও একটি উপদ্রব।
রেনি নিফেনিগার 6

2
এই পদ্ধতির জন্য সূচকযুক্ত লুপগুলির জন্য কাজ করে। স্টাইল লুপগুলিতে কীভাবে? একটি মার্জিত উপায় আছে?
kgf3JfUtW

2
বৈশিষ্ট্যের সাথে লেনদেন করার সময় সেই অতিরিক্ত একটি লাইন কোড জটিল হতে পারে। ifএই বোকা সামান্য কমাটি এড়ানোর জন্য আপনি নিজেকে প্রচুর পরিমাণে খুঁজে পেতে পারেন । ব্যয়বহুলতা সম্পর্কে ওয়াইএমএমভি, উদাহরণস্বরূপ এটি দেখুন jsfiddle.net/oriadam/mywL9384 স্পষ্টতা : আপনার সমাধানটি দুর্দান্ত, আমি কেবল চশমা ঘৃণা করি যা একটি পিছনে কমা নিষিদ্ধ করে।
অরিয়াদাম

133

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

উপরের কোডটি পুনর্গঠন করা যেতে পারে, হয় অ্যারে টার্মিনেটর যুক্ত করার সময় পেছনের কমাটি অপসারণ করতে বা আইটেমগুলির আগে কমা যোগ করতে, প্রথমটির জন্য এড়িয়ে যান।


1
ইসিএমএ 262 বিভাগ 11.1.5-অবজেক্ট ইনিশিয়ালিজারে এটি সংজ্ঞায়িত করে বলে মনে হচ্ছে। এটি ভাল হোক বা না হোক, মনে হচ্ছে এই অনুমানের মধ্যে।
জিরো ডিস্ট্রেশন

6
বৈধ ECMAScript হওয়ার অর্থ এই নয় যে কোনও নথি বৈধ JSON - JSON সাধারণত আরএফসি 4627 এ সংজ্ঞায়িত করা হয় , এবং সেই অনুমানটি পিছনে কমাতে অনুমতি দেয় না।
টিম গিলবার্ট

1
@ জিরো ডিসিস্ট্রাকশন: ইসিএমএ ২২২ ইসিএমএএসক্রিপ্ট (যা জাভাস্ক্রিপ্ট নামেও পরিচিত) সংজ্ঞায়িত করে যা পার্ল বা রুবি বা সি ++ বা জাভার মতো প্রোগ্রামিং ভাষা। জেএসএন হ'ল এক্সএমএল বা সিএসভি বা ওয়াইএএমএলের মতো ডেটা ফর্ম্যাট। এগুলো এক জিনিস না. জেএসএএন EXMA262 তে বিদ্যমান নেই তবে সিনট্যাক্সটি এটি থেকে উত্পন্ন এবং এটিকে অবজেক্ট আক্ষরিক স্বরলিপি (জেএসএন-এ অন) বলা হয়।
slebetman

106

সরল, সস্তা, পড়তে সহজ এবং চশমা নির্বিশেষে সর্বদা কাজ করে।

$delimiter = '';
for ....  {
    print $delimiter.$whatever
    $delimiter = ',';
}

$ ডিলিমের কাছে রিডানডেন্ট অ্যাসাইনমেন্টটি প্রদানের জন্য খুব কম দাম। কোনও স্পষ্ট লুপ না থাকলেও পৃথক কোড টুকরা না থাকলে ঠিক পাশাপাশি কাজ করে।


1
আমি সাধারণত এ জাতীয় পরিস্থিতিতে এটি করি; আমি মনে করি বিকল্প পদ্ধতির মান ( stackoverflow.com/a/201856/8946 ) এর আগে কমা যোগ করার শর্তসাপেক্ষে প্রয়োজনীয় অপসারণের চেয়ে অতিরিক্ত অ্যাসাইনমেন্টটি অফসেটের চেয়ে বেশি ।
লরেন্স ডল

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

3
এছাড়াও, for(let ..., sep=""; ... ; sep=",") { ...
লরেন্স ডল

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

21

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


1
আমি কোনও সমস্যা ছাড়াই কেবল এআই 11 এ তাদের চেষ্টা করেছি। আপনি কোন আইই এর সংস্করণ পরীক্ষা করেছেন, যেখানে আপনি তাদের সমস্যার কারণ হিসাবে খুঁজে পেয়েছেন?
আইকনোক্লাস্ট

10
ক্রকফোর্ডের মতো দেখে মনে হচ্ছে কেন আমাদের সুন্দর জিনিস থাকতে পারে না।
জেএসএনে

যখন ওপি সিউডোকোডের মতো সি ++ ব্যবহার করেছিল তখন কেন ওয়েব ব্রাউজারগুলি উল্লেখ করবেন? অপ্রাপ্তির প্রশ্নটি ওয়েব ব্রাউজারগুলি বা জাভাস্ক্রিপ্টের সাথে সম্পর্কিত unlikely
কাপলিনেটর

@cowlinator জে আভা এস cript হে bject এন otation
forresthopkinsa

1
জাভাস্ক্রিপ্ট অবজেক্ট
লিটারালরা

13

যেমনটি ইতিমধ্যে বলা হয়েছে, জেএসওএন স্পেক (ইসকামস্ক্রিপ্ট 3 এর উপর ভিত্তি করে) কমা কমাতে অনুমতি দেয় না। ES> = 5 এটির অনুমতি দেয়, যাতে আপনি প্রকৃত জেএসে সেই স্বরলিপিটি ব্যবহার করতে পারেন। এটি সম্পর্কে তর্ক করা হয়েছে, এবং কিছু পার্সার এটি সমর্থন করেছিল ( http://bolinfest.com/essays/json.html , http://whereswalden.com/2010/09/08/spidermonkey-json- بدل-trailing-commas- আর-স্বীকৃত নয় / ), তবে এটি অনুমানের সত্য ( http://json.org/ তে দেখানো হয়েছে ) এটি জেএসএনে কাজ করা উচিত নয় । জিনিসটি বলেছে ...

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

যেমন (ওপির প্রস্তাবিত কোডের মতো সি-স্টাইলের সিউডোকোডে):

s.append("[");
// MAX == 5 here. if it's constant, you can inline it below and get rid of the comparison
if ( MAX > 0 ) {
    s.appendF("\"%d\"", 0); // 0-th iteration
    for( int i = 1; i < MAX; ++i ) {
        s.appendF(",\"%d\"", i); // i-th iteration
    }
}
s.append("]");

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

12

পিএইচপি কোডারগুলি ইমপ্লোড () নিরীক্ষণ করতে চাইতে পারে । এটি একটি অ্যারে গ্রহণ করে এটি একটি স্ট্রিং ব্যবহার করে এতে যোগ দেয়।

ডক্স থেকে ...

$array = array('lastname', 'email', 'phone');
echo implode(",", $array); // lastname,email,phone

2
একইভাবে, জাভাস্ক্রিপ্ট যোগদান করেছে () । বেশিরভাগ ভাষায় একটি অনুরূপ পদ্ধতি থাকে বা একটি অনুরূপ ভাষা সহজেই কোড করা যায়।
ড্যান বার্টন

16
পিএইচপি-তে json_encode রয়েছে, যা কেবল কমা নয়, জেএসএন তৈরির সমস্ত বিবরণ পরিচালনা করে।
ব্রিলিয়ানড

চমৎকার! এটি কীভাবে JSON- এর জন্য প্রযোজ্য এবং এটি কীভাবে তাদের প্রশ্নের সমাধানে ওপিকে সহায়তা করে? মনে রাখবেন, "আপনি কি JSON অবজেক্টে ট্রিলিং কমা ব্যবহার করতে পারবেন?" প্রশ্ন হয়।
রকিন

7

মজার বিষয় হল, উভয় সি এবং সি ++ (এবং আমি মনে করি সি #, তবে আমি নিশ্চিত নই) নির্দিষ্টভাবে পিছনে কমা দেওয়ার অনুমতি দিয়েছেন - ঠিক কারণ হিসাবে: এটি কর্মসূচির ভিত্তিতে তালিকা তৈরির কাজগুলি আরও সহজ করে তোলে। জাভাস্ক্রিপ্ট কেন তাদের নেতৃত্ব অনুসরণ করে না তা নিশ্চিত নয়।


13
ইসিএমএ স্পষ্টভাবে নির্দিষ্ট করেছে যে আসন্ন স্পেসে ট্রেলিং কমা অনুমোদিত: ejohn.org/blog/bug-fixes-in- জাভাস্ক্রিপ্ট ২- এর আরও একটি কারণ পরিষ্কার হতে পারে যে জেএসএন ! = জেএস অবজেক্ট।
চোখের পলকহীনতা

পিএইচপি এটিও অনুমতি দেয়। আমি মনে করি এটি আমার পছন্দ পিএইচপি এর একটি বৈশিষ্ট্য। ; পি
আইকনোক্লাস্ট

4

JSON5 ব্যবহার করুন। জেএসএন ব্যবহার করবেন না।

  • অবজেক্ট এবং অ্যারেতে ক্রেইল কমা থাকতে পারে
  • যদি তারা বৈধ সনাক্তকারী হয় তবে অবজেক্ট কীগুলি উদ্ধৃত হতে পারে
  • স্ট্রিংগুলি একক-উদ্ধৃত করা যেতে পারে
  • স্ট্রিংগুলি একাধিক লাইনে বিভক্ত হতে পারে
  • নম্বরগুলি হেক্সাডেসিমাল হতে পারে (বেস 16)
  • দশমিক পয়েন্ট দিয়ে সংখ্যাগুলি শুরু বা শেষ হতে পারে।
  • নম্বরগুলি ইনফিনিটি এবং ইনফিনিটি অন্তর্ভুক্ত করতে পারে।
  • সংখ্যাগুলি একটি সুস্পষ্ট প্লাস (+) চিহ্ন দিয়ে শুরু করতে পারে।
  • উভয় ইনলাইন (একক-লাইন) এবং ব্লক (মাল্টি-লাইন) মন্তব্যের অনুমোদিত।

http://json5.org/

https://github.com/aseemk/json5


দেখতে দেখতে দুর্দান্ত লাগছে, তবে নতুন ডেটা ধরণের যুক্ত না করা যেন একটি মিস করা সুযোগের মতো মনে হয় ... অবশ্যই ECMAScript 5 এর একটি কঠোর সাবসেট থাকার আকাঙ্ক্ষা জোর করে, তবে এখনও ...
আইকনোক্লাস্ট

1
এছাড়াও, mutliline স্ট্রিং ভয়ানক। আমি ES6 multilines স্বপ্ন।
মার্কো সুলা

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

7
আমি বিশ্বাস করি যে কমা ঠিক করতে আপনার জীবনযাপন করা আরও ভয়াবহ।
ব্যবহারকারী 619271

3

লুপে একটি if- শাখা এড়ানোর সম্ভাব্য উপায় রয়েছে।

s.append("[ "); // there is a space after the left bracket
for (i = 0; i < 5; ++i) {
  s.appendF("\"%d\",", i); // always add comma
}
s.back() = ']'; // modify last comma (or the space) to right bracket

2

ক্লাস জেএসএনআরএর স্পেসিফিকেশন অনুসারে :

  • বন্ধ করার বন্ধনীটির ঠিক আগে একটি অতিরিক্ত, (কমা) উপস্থিত হতে পারে।
  • নাল মানটি সন্নিবেশ করা হবে যখন সেখানে (কমা) এলিজেন থাকবে।

সুতরাং, আমি এটি যেমন বুঝতে পারি, এটি লেখার অনুমতি দেওয়া উচিত:

[0,1,2,3,4,5,]

তবে এটি ঘটতে পারে যে কিছু পার্সার প্রত্যাশিত 6 এর পরিবর্তে 7 টি আইটেম কাউন্ট হিসাবে (ড্যানিয়েল আর্উইকারের মতো IE8 এর মতো) ফিরিয়ে দেবে।


সম্পাদিত:

আমি এই জেএসএন ভ্যালিডেটরটি পেয়েছি যা আরএফসি 4627 (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশনের জন্য অ্যাপ্লিকেশন / জসন মিডিয়া টাইপ) এবং জাভাস্ক্রিপ্ট ভাষার স্পেসিফিকেশনের বিপরীতে একটি জেএসএন স্ট্রিংকে বৈধ করে । প্রকৃতপক্ষে এখানে একটি পিছনে কমা সহ একটি অ্যারে কেবল জাভাস্ক্রিপ্টের জন্য বৈধ হিসাবে বিবেচিত হবে এবং আরএফসি 4627 স্পেসিফিকেশনের জন্য নয়।

তবে, আরএফসিতে 4627 স্পেসিফিকেশনটিতে বলা হয়েছে যে:

2.3। অ্যারেগুলির

একটি অ্যারের কাঠামো শূন্য বা আরও মান (বা উপাদান) এর আশেপাশে বর্গাকার বন্ধনী হিসাবে উপস্থাপিত হয়। উপাদানগুলি কমা দ্বারা পৃথক করা হয়।

array = begin-array [ value *( value-separator value ) ] end-array

আমার কাছে এটি আবার একটি ব্যাখ্যার সমস্যা। যদি আপনি লিখেন যে উপাদানগুলি কমা দ্বারা পৃথক করা হয় (শেষের উপাদানটির মতো বিশেষ কেস সম্পর্কে কিছু না বলে), এটি উভয় উপায়ে বোঝা যেতে পারে।

পিএস আরএফসি 4627 কোনও স্ট্যান্ডার্ড নয় (যেমন স্পষ্টভাবে বলা হয়েছে), এবং ইতিমধ্যে আরএফসি 7159 (যা প্রস্তাবিত স্ট্যান্ডার্ড) দ্বারা বিহীন হয়েছে আরএফসি 7159


6
প্রদত্ত ব্যাকরণের নিয়মটি যথাযথ হিসাবে আপনি পেতে পারেন is এর পাশের ডান value-separatorছাড়া কোনও উপায় নেই value। এছাড়াও পাঠ্যটি খুব নির্দিষ্ট। "মান পৃথককরণ" কেবলমাত্র একাধিক মান থাকলেই প্রয়োগ করতে পারে। সুতরাং আপনার যদি একে অপরের পাশে দুটি মান থাকে তবে সেগুলি কমা ব্যবহার করে পৃথক করা হয়। আপনার যদি একটি মান থাকে (বা যদি আপনি কেবল শেষে মানটি দেখেন) তবে কোনও বিচ্ছেদ নেই, তাই কোনও কমা নেই।
স্টিফেন হিল

1

আমার অতীত অভিজ্ঞতা থেকে, আমি দেখতে পেলাম যে বিভিন্ন ব্রাউজারগুলি JSON এ অনুবর্তী কমাগুলি আলাদাভাবে মোকাবেলা করে।

ফায়ারফক্স এবং ক্রোম উভয়ই ঠিকঠাকভাবে পরিচালনা করে। তবে আইই (সমস্ত সংস্করণ) মনে হচ্ছে এটি ভেঙে যাচ্ছে। আমি বলতে চাইছি সত্যিই ব্রেক এবং স্ক্রিপ্টের বাকী অংশ পড়া বন্ধ করুন।

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

:)


1

আমি একটি বর্তমান গণনা রাখি এবং এটিকে মোট গণনার সাথে তুলনা করি। যদি বর্তমান গণনা মোট গণনার চেয়ে কম হয়, আমি কমাটি প্রদর্শন করি।

JSON জেনারেশন কার্যকর করার আগে আপনার কাছে মোট গণনা না থাকলে কাজ করতে পারে না।

তারপরে আবার, যদি আপনার পিএইচপি 5.2.0 বা আরও ভাল ব্যবহার করা হয় তবে আপনি কেবল অন্তর্নির্মিত JSON এপিআই ব্যবহার করে আপনার প্রতিক্রিয়াটি ফর্ম্যাট করতে পারেন।


1

রিল্যাক্সড জেএসওনের সাহায্যে আপনার পেছনের কমা থাকতে পারে বা কমা ছেড়ে দিতে পারেন । তারা alচ্ছিক।

কোনও JSON- জাতীয় দস্তাবেজ পার্স করার জন্য কমা উপস্থিত থাকার প্রয়োজন নেই।

রিল্যাক্সড জেএসএন স্পেকটি দেখুন এবং আপনি দেখতে পাবেন আসল জেএসওএন স্পেকটি কী 'গোলমাল'। উপায় অনেকগুলি কমা এবং উদ্ধৃতি ...

http://www.relaxedjson.org

আপনি এই অনলাইন আরজেএসন পার্সার ব্যবহার করেও উদাহরণটি ব্যবহার করে দেখতে পারেন এবং এটি সঠিকভাবে বিশ্লেষণ করতে পারেন।

http://www.relaxedjson.org/docs/converter.html?source=%5B0%2C1%2C2%2C3%2C4%2C5%2C%5D


রিলাক্সড জেএসওএন জাসন নয় তাই প্রযুক্তিগতভাবে অ প্রযোজ্য।
ব্যবহারকারী 2864740

আপনি আরজেসনকে এবং জসন থেকে রূপান্তর করতে পারেন, সুতরাং এটি সম্পূর্ণ প্রযোজ্য। এটি আপনার কর্মপ্রবাহে যুক্ত করা খুব সহজ।
স্টিভেন স্পঞ্জিন

এটি এই ধারণাটি তৈরি করে যে ডাউন স্ট্রিম গ্রাহকরা এটি জেএসওএন নন understand বৈধ JSON এ রূপান্তর করার জন্য উভয় ক্ষেত্রেই কমা অপসারণ করা প্রয়োজন।
ব্যবহারকারী 2864740

ওপি শুরু করার জন্য একটি স্ট্রিং ব্যবহার করে। স্ট্রিংটি json objectব্যবহার করে JSON.parse, বা ব্যবহার করে একটি লাইব্রেরির মাধ্যমে পার্স করা যেতে পারে RJSON.parse। উত্সটি যদি কোনও বস্তু হয় তবে আমি আপনার সাথে একমত হব, তবে এখানে এটি হয় না। আমি দেখতে পাচ্ছি না যে প্রশ্নে এটি downstreamকোনও বস্তু বা স্ট্রিং গ্রাস করার বিষয়টি উল্লেখ করেছে।
স্টিভেন স্পঞ্জিন

"ম্যানুয়ালি কোনও JSON অবজেক্ট বা অ্যারে তৈরি করার সময় অবজেক্ট বা অ্যারেতে সর্বশেষ আইটেমটিতে একটি পিছনে কমা রেখে যাওয়া সহজ হয় .. [ জেএসওনে ] এটি অনুমোদিত ?" - সুতরাং, আবার: যদিও এটি একটি আকর্ষণীয় বিকল্প ফর্ম্যাট, এটি এটি জেএসএন নয় এবং জেএসএন সম্পর্কিত প্রশ্নের ক্ষেত্রে প্রযুক্তিগতভাবে প্রযোজ্য নয় । 'ডিফেন্ড' করার কিছু নেই: এটি এক্সকে প্রশ্ন করার জন্য একটি জেড প্রস্তাব
ব্যবহারকারী 2864740

0

আমি সাধারণত অ্যারের উপরে লুপ করি এবং স্ট্রিংয়ের প্রতিটি প্রবেশের পরে কমা সংযুক্ত করি। লুপের পরে আমি আবার শেষ কমাটি মুছব।

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


0

এটি প্রস্তাবিত নয়, তবে এটি পার্স করার জন্য আপনি এই জাতীয় কিছু করতে পারেন।

jsonStr = '[0,1,2,3,4,5,]';
let data;
eval('data = ' + jsonStr);
console.log(data)


0

যেহেতু ফর-লুপটি অ্যারে বা একই জাতীয় পুনরাবৃত্ত ডেটা কাঠামোর উপরে পুনরাবৃত্তি করতে ব্যবহৃত হয়, আমরা অ্যারের দৈর্ঘ্যটি দেখানো হিসাবে ব্যবহার করতে পারি,

awk -v header="FirstName,LastName,DOB" '
  BEGIN {
    FS = ",";
    print("[");
    columns = split(header, column_names, ",");
  }
  { print("  {");
    for (i = 1; i < columns; i++) {
      printf("    \"%s\":\"%s\",\n", column_names[i], $(i));
    }
    printf("    \"%s\":\"%s\"\n", column_names[i], $(i));
    print("  }");
  }
  END { print("]"); } ' datafile.txt

ডেটাফিল.টিএসটিএস সহ,

 Angela,Baker,2010-05-23
 Betty,Crockett,1990-12-07
 David,Done,2003-10-31

0

যেমনটি বলা হয়েছে এটি অনুমোদিত নয়। তবে জাভাস্ক্রিপ্টে এটি হ'ল:

var a = Array()
for(let i=1; i<=5; i++) {
    a.push(i)
}
var s = "[" + a.join(",") + "]"

(ফায়ারফক্স, ক্রোম, এজ, আই 11, এবং আই 9, 8, 7, 5 এ ছাড়াই দুর্দান্ত কাজ করে)

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