क्या आप JSON ऑब्जेक्ट में अनुगामी अल्पविराम का उपयोग कर सकते हैं?


392

जब मैन्युअल रूप से JSON ऑब्जेक्ट या सरणी बनाते हैं, तो अक्सर ऑब्जेक्ट या सरणी में अंतिम आइटम पर एक अनुगामी अल्पविराम छोड़ना आसान होता है। उदाहरण के लिए, कोड ऑफ़ स्ट्रिंग्स के आउटपुट से कोड लग सकता है (C ++ में pseudocode की तरह):

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

जैसे आप एक स्ट्रिंग दे

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

क्या यह अनुमति है?


66
यह कुछ ऐसा था जिसकी मुझे कुछ दिन पहले वेब पर देखने की जरूरत थी। मुझे एसओ पर यहां कोई उत्तर नहीं मिला, इसलिए साइट के मिशन का पालन करते हुए, मैंने सवाल उठाया और इसका जवाब दिया ताकि अन्य लोग इसे ढूंढ सकें। यह कुछ ऐसा है जो जेफ ने स्पष्ट रूप से कहा था कि वह यहां किया था।
बेन कॉम्पी

5
जैसा कि जेफ ने कहा, मुझे लगता है कि एसओ को 'नोटबुक' के रूप में इस्तेमाल करना ठीक है, जिसे देखने के लिए आपको कुछ समय बिताना होगा। निश्चित रूप से, यह उन प्रकार के आइटमों के सरल छोर पर है, लेकिन मैं अभी भी इसके उपयुक्त समझता हूं, खासकर जब से विभिन्न जावास्क्रिप्ट इंजन इस अलग से निपटेंगे।
pkaeding

6
मैं यह भी सोच रहा था, इसलिए यह एक पूरी तरह से उचित सवाल है।
hoju

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 ट्रेलिंग निर्दिष्ट करता है, लेकिन JSON नहीं है।
फ्लेवरस्केप Zul

4
हां, वह अतिरिक्त लाइन शायद ही महंगी है, लेकिन फिर भी एक उपद्रव।
रेने न्यफेनेगर

2
यह दृष्टिकोण लूप के लिए अनुक्रमित के लिए काम करता है। कैसे के बारे में ... शैली छोरों में? वहाँ एक सुंदर तरीका है?
kgf3JfUtW

2
गुणों के साथ काम करते समय कोड की एक अतिरिक्त रेखा जटिल हो सकती है। तुम अपने आप को मिल सकता है टन है ifकि बेवकूफ थोड़ा अल्पविराम से बचने के लिए। विस्तार के बारे में YMMV, उदाहरण के लिए इसे देखें jsfiddle.net/oriadam/mywL9384 स्पष्टीकरण: आपका समाधान महान है, मैं सिर्फ ऐनक से नफरत करता हूं जो एक अनुगामी अल्पविराम से मना करता है।
ओरिदम

133

नहीं, JSON युक्ति, जैसा कि http://json.org पर बनाए रखा गया है , अनुगामी अल्पविरामों की अनुमति नहीं देती है। जो मैंने देखा है, उसमें से कुछ पार्सन्स JSON स्ट्रिंग को पढ़ते समय चुपचाप उन्हें अनुमति दे सकते हैं, जबकि अन्य त्रुटियों को फेंक देंगे। इंटरऑपरेबिलिटी के लिए, आपको इसे शामिल नहीं करना चाहिए।

ऊपर दिए गए कोड का पुनर्गठन किया जा सकता है, या तो एरे टर्मिनेटर को जोड़ते समय ट्रेलिंग अल्पविराम को हटा दिया जाए या पहले आइटम के लिए अल्पविराम को जोड़ दिया जाए, जो पहले एक के लिए छोड़ देता है।


1
ईसीएमए 262 धारा 11.1.5-वस्तु प्रारंभिक में इसे परिभाषित करता है। यह अच्छा है या नहीं, कल्पना में लगता है।
जीरो डिस्ट्रैक्शन

6
वैध ECMAScript होने का मतलब यह नहीं है कि एक दस्तावेज वैध JSON है - JSON आमतौर पर RFC 4627 में परिभाषित किया गया है , और यह कल्पना अनुगामी अल्पविराम की अनुमति नहीं देती है।
टिम गिल्बर्ट

1
@ZeroDistraction: ECMA262 ECMAscript (जिसे जावास्क्रिप्ट के रूप में भी जाना जाता है) को परिभाषित करता है जो पर्ल या रूबी या C ++ या Java जैसी प्रोग्रामिंग भाषा है। JSON XML या CSV या YAML की तरह एक डेटा प्रारूप है। ये एक ही चीज नहीं हैं। JSON EXMA262 में मौजूद नहीं है, लेकिन इसका सिंटैक्स होता है जो इसे करता है और इसे ऑब्जेक्ट शाब्दिक अंकन (JSON में चालू) कहा जाता है।
स्लीबेटमैन

106

सरल, सस्ता, पढ़ने में आसान, और हमेशा चश्मे की परवाह किए बिना काम करता है।

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

$ Delim के लिए निरर्थक असाइनमेंट भुगतान करने के लिए बहुत कम कीमत है। साथ ही साथ काम करता है अगर कोई स्पष्ट लूप नहीं है, लेकिन अलग-अलग कोड टुकड़े हैं।


1
ऐसा मैं आमतौर पर इस तरह की स्थितियों में करता हूं; मुझे लगता है कि वैकल्पिक दृष्टिकोण में मूल्य से पहले अल्पविराम को लागू करने के लिए आवश्यक सशर्त को समाप्त करके अतिरिक्त असाइनमेंट ऑफसेट से अधिक है ( stackoverflow.com/a/201856/8946 )।
लॉरेंस Dol

5
मुझे यह समाधान पसंद नहीं है, क्योंकि मेरा दायरा प्रदूषित करने वाला एक और चर है। एक ifआसान समझ है। लेकिन साझा करने के लिए धन्यवाद।
इच

3
इसके अलावा, विभाजक के दायरे को समाहित करना बेहतर है:for(let ..., sep=""; ... ; sep=",") { ...
लॉरेंस डोल

1
मुझे यह दृष्टिकोण पसंद है क्योंकि यह सशर्त से बचता है, हालांकि आधुनिक सीपीयू को अच्छा शाखा पूर्वानुमान तर्क मिला है। यह भी देखें कि एक अनसुलझी सरणी की तुलना में सॉर्ट किए गए सरणी को संसाधित करना अधिक तेज़ क्यों है?
होसैन

21

जावास्क्रिप्ट में ट्रेलिंग कॉमा की अनुमति है, लेकिन IE में काम नहीं करते हैं। डगलस क्रॉकफोर्ड के संस्करणहीन JSON कल्पना ने उन्हें अनुमति नहीं दी, और क्योंकि यह संस्करणहीन था, इसे बदलना नहीं चाहिए था। ES5 JSON युक्ति ने उन्हें एक एक्सटेंशन के रूप में अनुमति दी, लेकिन क्रॉकफोर्ड के RFC 4627 ने नहीं किया, और ES5 ने उन्हें अस्वीकार करने के लिए वापस कर दिया। फ़ायरफ़ॉक्स सूट के बाद। Internet Explorer हम अच्छी चीजें क्यों नहीं कर सकते हैं।


1
मैं सिर्फ IE 11 में उन्हें कोई समस्या नहीं के साथ की कोशिश की। IE के किन संस्करणों में आपने परीक्षण किया है, जहां आपने उन्हें समस्याएं पैदा करने के लिए पाया है?
iconoclast

10
क्रॉकफोर्ड की तरह लगता है कि हम अच्छी चीजें क्यों नहीं कर सकते हैं। JSON में वह और टिप्पणियां
हज्जाज़मैन

वेब ब्राउज़रों का उल्लेख क्यों करें जब ओपी ने सी + + का उपयोग स्यूडोकोड की तरह किया? यह संभावना नहीं है कि ओपी का प्रश्न वेब ब्राउज़र या जावास्क्रिप्ट से संबंधित है।
काउललाइनर

@cowlinator जम्मू एवा एस cript हे bject एन otation
forresthopkinsa

1
जावास्क्रिप्ट वस्तु शाब्दिकों ने प्रारूप को प्रेरित किया, लेकिन JSON जावास्क्रिप्ट इंजनों के लिए नहीं है
काउललाइनर

13

जैसा कि पहले ही कहा जा चुका है, JSON युक्ति (ECMAScript 3 पर आधारित) अनुगामी अल्पविराम की अनुमति नहीं देता है। ईएस> = 5 इसे अनुमति देता है, इसलिए आप वास्तव में शुद्ध जेएस में उस नोटेशन का उपयोग कर सकते हैं। इसके बारे में तर्क दिया गया है, और कुछ पार्सर्स ने इसका समर्थन किया ( http://bolinfest.com/essays/json.html , http://whereswalden.com/2010/09/08/spidermonkey-json-change-trailing-commas नहीं-अब-स्वीकृत / ), लेकिन यह विशिष्ट तथ्य है (जैसा कि http://json.org/ पर दिखाया गया है ) कि यह JSON में काम नहीं करना चाहिए । उस बात को कहा ...

... मैं सोच रहा हूं कि किसी ने यह क्यों नहीं बताया कि आप वास्तव में 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
सरल और तेज कोड नमूना। प्रस्तावित उत्तर के समाधानों की तुलना में बहुत बेहतर है।
ट्रेवर जेक्स

12

PHP कोडर्स को बाहर की जाँच करना चाहते हो सकता है () । यह एक स्ट्रिंग लेता है यह एक स्ट्रिंग का उपयोग करके जुड़ता है।

से डॉक्स ...

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

2
इसी तरह, जावास्क्रिप्ट शामिल हो गया है () । अधिकांश भाषाओं में एक समान विधि है, या एक समान एक आसानी से कोडित किया जा सकता है।
दान बर्टन

16
PHP में json_encode है, जो केवल कॉमा नहीं, बल्कि JSON बनाने के सभी विवरणों को संभालता है।
ब्रिलियनड

यह अच्छा है! यह JSON पर कैसे लागू होता है और यह कैसे ओपी को उनके प्रश्न के समाधान में मदद करता है? याद रखें, "क्या आप JSON ऑब्जेक्ट में एक अनुगामी अल्पविराम का उपयोग कर सकते हैं?" क्या प्रश्न है।
रॉकिन

7

दिलचस्प बात यह है कि दोनों C & C ++ (और मुझे लगता है कि C #, लेकिन मुझे यकीन नहीं है) विशेष रूप से अनुगामी अल्पविराम की अनुमति देता है - बिल्कुल दिए गए कारण के लिए: यह प्रोग्राम बनाने वाली सूचियों को बहुत आसान बनाता है। सुनिश्चित नहीं हैं कि जावास्क्रिप्ट ने उनके नेतृत्व का पालन क्यों नहीं किया।


13
ECMA ने स्पष्ट रूप से निर्दिष्ट किया है कि आगामी अल्पविराम में ट्रेलिंग कॉमा की अनुमति है: ejohn.org/blog/bug-fixes-in-javascript-2 अभी तक स्पष्ट होने का एक और कारण है कि JSON! = JS ऑब्जेक्ट!
पलकविहीनता

PHP भी इसकी अनुमति देता है। मुझे लगता है कि यह PHP की एक विशेषता है जो मुझे पसंद है। ; पी
iconoclast

4

JSON5 का उपयोग करें। JSON का उपयोग न करें।

  • वस्तुओं और सरणियों में अनुगामी अल्पविराम हो सकते हैं
  • यदि वे मान्य पहचानकर्ता हैं, तो ऑब्जेक्ट कुंजी को निर्विवादित किया जा सकता है
  • स्ट्रिंग्स को एकल-उद्धृत किया जा सकता है
  • स्ट्रिंग्स को कई लाइनों में विभाजित किया जा सकता है
  • संख्या हेक्साडेसिमल (आधार 16) हो सकती है
  • संख्याएँ (अग्रणी या अनुगामी) दशमलव बिंदु के साथ शुरू या समाप्त हो सकती हैं।
  • नंबरों में इन्फिनिटी और -इनफिनिटी शामिल हो सकते हैं।
  • संख्या एक स्पष्ट प्लस (+) चिह्न के साथ शुरू हो सकती है।
  • इनलाइन (सिंगल-लाइन) और ब्लॉक (मल्टी-लाइन) दोनों टिप्पणियों की अनुमति है।

http://json5.org/

https://github.com/aseemk/json5


अच्छा लग रहा है, लेकिन नए डेटा प्रकारों को जोड़ना नहीं है, एक चूक के अवसर की तरह लगता है ... बेशक ईसीएमएस्क्रिप्ट 5 बलों की एक सख्त सबसेट बने रहने की इच्छा है, लेकिन अभी भी ...
iconoclast

1
इसके अलावा, म्यूटिलीन स्ट्रिंग्स भयानक हैं। मैं ईएस 6 मल्टीलाइन का सपना देखता हूं।
मार्को सुल

10
नहीं, यह HORRIBLE सलाह है। सभी मौजूदा JSON पुस्तकालयों में से, बहुत कम ऐसे विस्तार का समर्थन करते हैं; और बहुत ही संदिग्ध "सुधार" के लिए। कृपया इस तरह के नए फर्जी विस्तारों द्वारा अंतर-संचालन के और क्षरण का कारण न बनें।
स्टैक्मैन मैन

7
मेरा मानना ​​है कि कॉमा को ठीक करने में अपना जीवन बिताना अधिक भयानक है।
user619271

3

लूप में एक-शाखा से बचने का एक संभावित तरीका है।

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

कक्षा के अनुसार JSONArray विनिर्देशन :

  • समापन ब्रैकेट के ठीक पहले एक अतिरिक्त, (अल्पविराम) दिखाई दे सकता है।
  • शून्य मान तब डाला जाएगा, जब (अल्पविराम) एलीसन हो।

इसलिए, जैसा कि मैं इसे समझता हूं, इसे लिखने की अनुमति दी जानी चाहिए:

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

लेकिन ऐसा हो सकता है कि कुछ पर्सर्स उम्मीद की 6 के बजाय आइटम नंबर के रूप में 7 (आईई 8 जैसा कि डैनियल ईयरविकेर ने बताया) वापस कर देंगे।


संपादित:

मुझे यह JSON Validator मिला जो RFC 4627 के खिलाफ JSON स्ट्रिंग को मान्य करता है (जावास्क्रिप्ट ऑब्जेक्ट संकेतन के लिए आवेदन / json मीडिया प्रकार) और जावास्क्रिप्ट भाषा विनिर्देश के करता है। वास्तव में यहाँ एक अनुगामी अल्पविराम के साथ एक सरणी को केवल जावास्क्रिप्ट के लिए वैध माना जाता है न कि RFC 4627 विनिर्देशन के लिए।

हालांकि, RFC 4627 विनिर्देश में कहा गया है कि:

2.3। Arrays

एक सरणी संरचना को वर्गाकार कोष्ठकों के रूप में शून्य या अधिक मान (या तत्व) के रूप में दर्शाया जाता है। तत्वों को अल्पविराम द्वारा अलग किया जाता है।

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

मेरे लिए यह फिर से एक व्याख्या समस्या है। यदि आप लिखते हैं कि तत्व अल्पविराम द्वारा अलग किए गए हैं (विशेष मामलों के बारे में कुछ बताते हुए, जैसे कि अंतिम तत्व), तो इसे दोनों तरीकों से समझा जा सकता है।

PS RFC 4627 एक मानक नहीं है (जैसा कि स्पष्ट रूप से कहा गया है), और पहले से ही RFC 7159 (जो एक प्रस्तावित मानक है) RFC 7159 द्वारा अवलोकित है


6
दिया गया व्याकरण नियम उतना ही सटीक है जितना आप प्राप्त कर सकते हैं। इसके बगल में value-separatorएक valueअधिकार के बिना कोई रास्ता नहीं है। इसके अलावा पाठ बहुत विशिष्ट है। "मूल्यों का पृथक्करण" केवल तभी लागू हो सकता है जब कई मान हों। इसलिए यदि आपके पास एक दूसरे के बगल में दो मान हैं, तो उन्हें अल्पविराम का उपयोग करके अलग किया जाता है। यदि आपके पास एक मूल्य है (या यदि आप केवल अंत में मूल्य को देखते हैं), तो कोई अलगाव नहीं है, इसलिए कोई अल्पविराम नहीं है।
स्टीफन हील

1

मेरे पिछले अनुभव से, मैंने पाया कि अलग-अलग ब्राउज़र JSON में अलग-अलग तरीके से अल्पविराम के साथ सौदा करते हैं।

फ़ायरफ़ॉक्स और क्रोम दोनों ही इसे ठीक से हैंडल करते हैं। लेकिन IE (सभी संस्करण) को तोड़ने लगता है। मेरा मतलब है कि वास्तव में बाकी स्क्रिप्ट को तोड़ना और पढ़ना बंद करें।

इस बात को ध्यान में रखते हुए, और यह भी कि यह हमेशा आज्ञाकारी कोड लिखने के लिए अच्छा है, मैं यह सुनिश्चित करने के अतिरिक्त प्रयास खर्च करने का सुझाव देता हूं कि कोई अनुगामी अल्पविराम नहीं है।

:)


1

मैं एक वर्तमान गणना रखता हूं और इसकी कुल संख्या से तुलना करता हूं। यदि वर्तमान गणना कुल संख्या से कम है, तो मैं अल्पविराम प्रदर्शित करता हूं।

यदि आपके पास JSON पीढ़ी को निष्पादित करने से पहले कुल गिनती नहीं है तो काम न करें।

फिर से, यदि आपका PHP 5.2.0 या बेहतर उपयोग कर रहे हैं, तो आप केवल JSON API का उपयोग करके अपनी प्रतिक्रिया को प्रारूपित कर सकते हैं।


1

रिलैक्सेड JSON के साथ, आप कमिंग कॉमा हो सकते हैं, या बस कॉमा को बाहर छोड़ सकते हैं । वे वैकल्पिक हैं।

JSON जैसे दस्तावेज़ को पार्स करने के लिए सभी कॉमा पर मौजूद होने का कोई कारण नहीं है।

आराम से JSON कल्पना पर एक नज़र डालें और आप देखेंगे कि मूल JSON कल्पना 'शोर' कैसे है। बहुत से अल्पविराम और उद्धरण ...

http://www.relaxedjson.org

आप इस ऑनलाइन RJSON पार्सर का उपयोग करके अपने उदाहरण को भी आज़मा सकते हैं और देख सकते हैं कि यह सही ढंग से पार्स हो गया है।

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


आराम से JSON, JSON तो तकनीकी रूप से गैर-लागू नहीं है।
user2864740

आप jjson को json से और उससे बदल सकते हैं, इसलिए यह पूरी तरह से लागू है। अपने वर्कफ़्लो में भी इसे जोड़ना बहुत आसान है।
स्टीवन स्पूंगिन

इससे यह धारणा बनती है कि डाउनस्ट्रीम उपभोक्ता इसे नहीं बल्कि JSON समझते हैं। JSON को मान्य करने के लिए किसी भी स्थिति में अल्पविराम को हटाने की आवश्यकता होगी।
user2864740

ओपी शुरू करने के लिए एक स्ट्रिंग का उपयोग करता है। स्ट्रिंग json objectका उपयोग करके JSON.parse, या लाइब्रेरी का उपयोग करके पार्स किया जा सकता है RJSON.parse। अगर स्रोत एक वस्तु था, तो मैं आपके साथ सहमत हूं, लेकिन यहां ऐसा नहीं है। मैं यह नहीं देखता कि प्रश्न में downstreamकिसी वस्तु या स्ट्रिंग का सेवन करने का उल्लेख कहां है ।
स्टीवन स्पूंगिन

"जब मैन्युअल रूप से JSON ऑब्जेक्ट या एरे को जेनरेट किया जाता है , तो अक्सर ऑब्जेक्ट या एरे में अंतिम आइटम पर ट्रेलिंग कॉमा को छोड़ना आसान होता है .. क्या यह अनुमति है [ JSON में ?" - हां, तो फिर: जबकि इस एक दिलचस्प वैकल्पिक प्रारूप है, यह है नहीं JSON और तकनीकी रूप से के बारे में सवाल पर लागू नहीं JSON । 'बचाव' करने के लिए कुछ भी नहीं है: यह एक्स पर सवाल करने के लिए एक जेड प्रस्ताव है
उपयोगकर्ता 3:28 पर

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

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(",") + "]"

(फ़ायरफ़ॉक्स, क्रोम, एज, IE11 में ठीक काम करता है, और IE9, 8, 7, 5 में बिना)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.