JSON'u (JavaScript'te) Stringify ve Regex replace ile biçimlendirme konusunda yardıma ihtiyacınız var

Jan 19 2021

Normal ifadede bir şey eksik ve virgülden önceki her öğenin son harfini kaldırıyor.

Basit kod:

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, ',   "');

Sonuç:

"{
   "a": {
      "a1": "one,   "is_active": tru,   "a2": "two"
   },
   "b": {
      "b1": "one,   "is_active": tru,   "b2": "two"
   }
}"

Almaya çalıştığım şey:

"{
   "a": {
      "a1": "one",   "is_active": true,   "a2": "two"
   },
   "b": {
      "b1": "one",   "is_active": true,   "b2": "two"
   }
}"

Yanlış olan şeyler:
"bir," bir "
olmalı," gerçek, "doğru" olmalı,

Yanıtlar

3 BenWainwright Jan 19 2021 at 06:36

Senin sorunun şu ki, aşağıdaki karakter dizisini buluyorsun

  • Kapanış ayracı olmayan herhangi bir karakter
  • Bir virgül
  • Yeni satır karakteri
  • Herhangi bir sayıda boşluk

Ve tüm diziyi değiştiriyoruz . "Doğru" nun sonundaki "e" bir kapanış ayracı olmadığından, aynı zamanda değiştirilir.

Sıradaki ilk öğenin "kapanış ayracından hemen sonra gelen virgül" olması için ihtiyacınız olan şey. Geriye doğru negatif bir bakış kullanarak bunu yapabilirsiniz .

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 Jan 19 2021 at 06:31
JSON.stringify(test_json,null,3).replace(/([^}]?),\n( )*"/g, '$1,   "');

en iyi yol olduğundan emin değilim ama akla gelen ilk şey