এই সাধারণ নিয়মিত অভিব্যক্তি সমাধান বেশিরভাগ ক্ষেত্রে JSON সম্পত্তি নামগুলি উদ্ধৃত করতে কাজ করে:
const object = { name: 'John Smith' };
const json = JSON.stringify(object);
console.log(json);
const unquoted = json.replace(/"([^"]+)":/g, '$1:');
console.log(unquoted);
চরম মামলা:
var json = '{ "name": "J\\":ohn Smith" }'
json.replace(/\\"/g,"\uFFFF");
json = json.replace(/"([^"]+)":/g, '$1:').replace(/\uFFFF/g, '\\\"');
এটি ঠিক করার জন্য রব ডব্লু কে বিশেষ ধন্যবাদ।
সীমাবদ্ধতা
সাধারণ ক্ষেত্রে পূর্বোক্ত রেজিএক্সপেক্ট কাজ করবে, তবে গাণিতিকভাবে JSON ফর্ম্যাটটি নিয়মিত অভিব্যক্তি দিয়ে বর্ণনা করা অসম্ভব যে এটি প্রতিটি একক ক্ষেত্রে কাজ করবে (একই সংখ্যক কোঁকড়ানো বন্ধনী গণনা regexp সহ অসম্ভব।) সুতরাং, আমার কাছে দেশীয় ফাংশনের মাধ্যমে আনুষ্ঠানিকভাবে JSON স্ট্রিংকে বিশ্লেষণ করে উদ্ধৃতিগুলি সরানোর জন্য একটি নতুন ফাংশন তৈরি করুন:
function stringify(obj_from_json) {
if (typeof obj_from_json !== "object" || Array.isArray(obj_from_json)){
return JSON.stringify(obj_from_json);
}
let props = Object
.keys(obj_from_json)
.map(key => `${key}:${stringify(obj_from_json[key])}`)
.join(",");
return `{${props}}`;
}
উদাহরণ: https://jsfiddle.net/DerekL/mssybp3k/