В идеале найти библиотеку JSON на вашем языке, что вы можете кормить подходящую структуру данных для, и дайте ему беспокоиться о том, как избежать вещей. Это будет держать вас в курсе. Если по какой-либо причине у вас нет библиотеки на вашем языке, вы не хотите ее использовать (я бы не предложил это 1), или вы пишете библиотеку JSON, читайте дальше.
Побег в соответствии с RFC. JSON довольно либеральный: единственные персонажи, которых вы должны, являются: \
, "
и коды управления (что-то меньшее, чем U + 0020).
Эта структура экранирования специфична для JSON. Вам понадобится специальная функция JSON. Все экраны могут быть записаны как \uXXXX
, где XXXX
является кодовым номером UTF-16 для этого символа. Есть несколько ярлыков, таких как \\
, которые также работают. (И они приводят к меньшему и более четкому выходу.)
Подробнее см. the RFC.
¹Индикация JSON построена на JS, поэтому используется \uXXXX
, где XXXX
- это кодовый блок UTF-16. Для кодовых точек вне BMP это означает кодирование суррогатных пар, которые могут быть немного волосатыми. (Или вы можете просто выводить символ напрямую, так как JSON закодирован для текста Unicode и позволяет использовать эти конкретные символы.)
Если вы завершаете всю строку парой '' ', вы обречены с самого начала: строки JSON могут быть окружены только' ''. См. Http://www.ietf.org/rfc /rfc4627.txt – Thanatos
+1 для контура 'StringEscapeUtilities'. Его довольно полезно. –