В ідеалі знайдіть бібліотеку JSON своєю мовою, до якої можна подати якусь відповідну структуру даних, і нехай вона буде хвилюватися про те, як уникнути речей . Це збереже вас набагато безпечніше. Якщо з будь-якої причини у вас немає бібліотеки на вашій мові, ви не хочете використовувати її (я б не пропонував це¹) або ви пишете бібліотеку JSON, читайте далі.
Уникнути цього за даними RFC. JSON досить ліберальний: тільки символи ви повинні вирватися з кабали \
, "
і керуючі коди (все , що менше , ніж U + 0020).
Ця структура втечі є специфічною для JSON. Вам знадобиться спеціальна функція JSON. Усі вихідні записи можуть бути записані так, \uXXXX
де XXXX
знаходиться кодова одиниця UTF-16¹ для цього символу. Є кілька ярликів, таких як \\
, які також працюють. (І вони призводять до меншого та чіткішого результату.)
Повна інформація див. У RFC .
EscaJSON втікання побудований на JS, тому він використовує \uXXXX
, де XXXX
є кодовим блоком UTF-16. Для кодових пунктів поза BMP це означає кодування сурогатних пар, які можуть бути трохи волохатими. (Або ви можете просто вивести символ безпосередньо, оскільки кодований JSON - текст Unicode, і він дозволяє цим конкретним символам.)
'
, ви зрештою приречені: рядки JSON можна оточити лише"
. Дивіться ietf.org/rfc/rfc4627.txt .