Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menghuraikan JSON Santai Dengan Selamat Tanpa Menggunakan `eval`?

Bagaimana untuk Menghuraikan JSON Santai Dengan Selamat Tanpa Menggunakan `eval`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 05:44:02531semak imbas

How to Safely Parse Relaxed JSON Without Using `eval`?

Menghuraikan JSON Santai Dengan Selamat

Menghuraikan JSON "santai" tanpa menggunakan fungsi eval yang berpotensi berbahaya adalah cabaran biasa apabila bekerja dengan data JSON yang mungkin tidak mematuhi sintaks JSON yang ketat. Walaupun JSON.parse() memerlukan kunci untuk dipetik, sesetengah senario memerlukan menghuraikan JSON dengan kunci tidak disebut untuk kemudahan atau sebab warisan.

Satu pendekatan untuk mengendalikan JSON "santai" dengan selamat ialah membersihkan JSON sebelum menghuraikannya. Menggunakan penggantian ungkapan biasa, anda boleh menukar kunci yang tidak disebut petikan kepada kunci yang dipetik sambil mengekalkan struktur JSON yang lain.

var badJson = "{muh: 2}";
var correctJson = badJson.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"": ');

Dalam contoh ini, ungkapan biasa mencari kunci tidak disebut yang dikelilingi oleh petikan tunggal atau berganda pilihan , diikuti dengan kolon. Ia kemudian menggantikan padanan dengan sintaks kunci yang dipetik yang betul, memastikan rentetan JSON kini memenuhi format JSON yang betul.

Setelah rentetan JSON dibersihkan, anda boleh menghuraikannya dengan selamat menggunakan JSON.parse():

JSON.parse(correctJson);

Kaedah ini membolehkan anda menghuraikan JSON "santai" dengan kunci yang tidak dipetik sambil mengekalkan keselamatan dan kebolehpercayaan penghuraian JSON tanpa memerlukan penghurai tersuai atau teknik tidak selamat seperti eval.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan JSON Santai Dengan Selamat Tanpa Menggunakan `eval`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn