Экранирование текста в C++ для передачи данных как объекта JSONC++

Программы на C++. Форум разработчиков
Anonymous
Экранирование текста в C++ для передачи данных как объекта JSON

Сообщение Anonymous »

Я пишу модуль узла на C++, который передает данные туда и обратно с помощью объектов JSON.
Например, я читаю эту строку CSV в C++:

Код: Выделить всё

// input.csv
description;This is a "text" containing all sorts of symbols: Ü€ễ張
Желаемый вывод должен быть допустимым объектом JSON, например:

Код: Выделить всё

{
"description": "This is a \"text\" containing all sorts of symbols: Ü€ễ張"
}
Пример кода на стороне C++:

Код: Выделить всё

if(line[0] == "description") {
std::string jsonObject = std::format("{{\"description\":\"{}\"}}", line[1]);
}
Итак, хотя я и подтвердил, что данные правильно считываются в C++ (я могу записать их обратно в файл, и все символы такие, какими они должны быть), есть две проблемы с JSON. :
  • Апострофы не экранируются, поэтому JSON недействителен.
  • Специальные символы отображаются неправильно. .
Пока я могу просто заменить апострофы (на \"), я предполагаю, что для 1 существует больше случаев. Мне нужно знать, что это может испортить строку (например, обратную косую черту).Итак, как мне экранировать строки, чтобы безопасно передавать их туда и обратно в моих объектах JSON? Есть ли простой способ преобразовать их в «безопасный» формат?
Заранее спасибо!


Подробнее здесь: https://stackoverflow.com/questions/772 ... son-object

Вернуться в «C++»