Stringify और Regex की जगह JSON (जावास्क्रिप्ट में) को फॉर्मेट करने में मदद चाहिए
मुझे रेगेक्स के साथ कुछ याद आ रहा है और यह कॉमा से पहले प्रत्येक आइटम के अंतिम अक्षर को हटा रहा है।
नमूना कोड:
let test_json = {
"a" : { "a1" : "one", "is_active" : true, "a2" : "two" },
"b" : { "b1" : "one", "is_active" : true, "b2" : "two" }
};
JSON.stringify(test_json, null, 3).replace(/[^}],\n( )*"/g, ', "');
परिणाम है:
"{
"a": {
"a1": "one, "is_active": tru, "a2": "two"
},
"b": {
"b1": "one, "is_active": tru, "b2": "two"
}
}"
मैं जो पाने की कोशिश कर रहा हूं वह है:
"{
"a": {
"a1": "one", "is_active": true, "a2": "two"
},
"b": {
"b1": "one", "is_active": true, "b2": "two"
}
}"
जो चीजें गलत हैं:
"एक," एक "
होना चाहिए , " ट्रू, "सच" होना चाहिए,
जवाब
3 BenWainwright
आपकी समस्या यह है कि आप वर्णों के निम्नलिखित अनुक्रम को पा रहे हैं
- कोई भी चरित्र जो एक समापन ब्रेस नहीं है
- एक अल्पविराम
- एक नया चरित्र
- कितनी भी जगह
और पूरे अनुक्रम की जगह । चूंकि "सच" के अंत में "ई" एक समापन ब्रेस नहीं है, इसलिए इसे भी बदल दिया जाता है।
अनुक्रम में पहले आइटम के लिए आपको जो आवश्यक है वह "एक अल्पविराम है जो एक समापन ब्रेस के तुरंत बाद आता है"। आप एक नकारात्मक खोज के उपयोग से ऐसा कर सकते हैं ।
let test_json = {
a: {
a1: "one",
is_active: true,
a2: "two"
},
b: {
b1: "one",
is_active: true,
b2: "two"
},
};
const result = JSON.stringify(test_json, null, 3).replace(
/(?<!}),\n\s*/g,
", "
);
console.log(result);
1 MCP
JSON.stringify(test_json,null,3).replace(/([^}]?),\n( )*"/g, '$1, "');
यह सबसे अच्छा तरीका नहीं है, लेकिन यह पहली बात है जो दिमाग में आई