JSON escape et unescape : gerer correctement les donnees imbriquees
2024-04-15
Files de messages, logs et colonnes DB stockent souvent du JSON comme chaine dans du JSON. Comprendre l'echappement est essentiel pour deplier ces payloads.
Caracteres a echapper
Dans les chaines : ", \, et caracteres de controle comme \n et \t.
{
"quote": "He said \"Hello\"",
"path": "C:\\temp\\data"
}JSON imbrique en chaine
Parsez d'abord l'exterieur, puis appliquez JSON.parse au champ interne de type chaine.
{ "payload": "{\"id\":1,\"name\":\"Alice\"}" }Double echappement dans les logs
Ne comptez pas les antislashs a la main : parsez plusieurs fois jusqu'a obtenir un objet ou la chaine attendue.
Desechappement sur
Utilisez JSON.parse, pas des remplacements regex. Apres parsing de donnees non fiables, validez la structure (par ex. cles __proto__).
Autres contextes (SQL, shell)
L'echappement JSON n'est pas celui du SQL ou du shell. Construisez l'objet, faites JSON.stringify, puis appliquez l'echappement propre au contexte cible.
Workflow recommande
Coller -> parser -> formater -> parser les champs encore en chaine -> validation metier.