Butuh bantuan dalam memformat JSON (dalam JavaScript) dengan mengganti Stringify dan Regex

Jan 19 2021

Saya kehilangan sesuatu dengan regex dan menghapus huruf terakhir dari setiap item sebelum koma.

Kode sampel:

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

Hasilnya adalah:

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

Apa yang saya coba dapatkan adalah:

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

Hal-hal yang salah:
"satu, harus" satu ",
" benar, harus "benar",

Jawaban

3 BenWainwright Jan 19 2021 at 06:36

Masalah Anda adalah Anda menemukan urutan karakter berikut

  • Karakter apa pun yang bukan kurung kurawal tutup
  • Koma
  • Karakter baris baru
  • Sejumlah spasi

Dan mengganti seluruh urutan . Karena "e" di akhir "true" bukan penjepit penutup, ia juga akan diganti.

Yang Anda butuhkan adalah item pertama dalam urutan menjadi "koma yang muncul segera setelah tanda kurung kurawal". Anda dapat melakukan ini menggunakan pandangan negatif di belakang .

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

tidak yakin itu cara terbaik tapi itu hal pertama yang terlintas dalam pikiran