Я пишу модуль узла на 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