JSON формат, экранирование символов

О чем здесь будет речь. О том как использовать Json формат данных в GUI приложении Windows с использованием удаленной базы MySql на сервере в интернете.

Приложениие на Qt обменивается информацией с сервером по HTTP json протоколу.

Например серверу посылается в теле байты:

{"aaa":"bbb\"bb\'b"}

Тут видно , что символ двойные кавычки экранируется, иначе нельзя никак , так как структуру json на сервере не удастся декодировать через jsob_decode (php).

Обратно сервер отвечает таким же способом, кодируя свои Json данные через json_encode.

Это все понятно с небольшими нюансами.

Но далее данные из полученного json пакета сервер хочет сохранить в базе MySql.

И тут надо еще раз экранировать экранированные символы, чтобы избежать умышленного вредительства (sql инъекции и т.д.).

То есть переменную aaa надо сохранять в виде:

bbb\\\"bb\\\'b

Впоследствии, когда мы будем (допустим к примеру) считывать переменную aaa из базы и передавать нашему приложению в http запросе, то данные уже экранировать возможно не надо.


В приложение мы обратно должны в http ответе также получить экранированные символы как и при передаче серверу:

{"aaa":"bbb\"bb\'b"}

Далее в приложении (на Qt) мы сохраняем переменную aaa допустим в виджет QLineEdit и там видим ее уже так (без экранирования):

bbb"bb'b

И это тоже правильно.

Далее редактируем ее в в QLineEdit как нам вздумается добавляя все возможные символы и спец.символы.

Потом опять сохраняем эти данные на сервере, но предварительно экранируем двойные кавычки и обратный слэш.
Точнее сначала экранируем обратный слэш, а потом двойную кавычку.

И в результате мы теперь гоняем данные туда сюда корректно.