我正在用 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 存在两个问题:
虽然我可以简单地替换撇号(
"
到\"
),但我假设1.
有更多情况,我需要意识到这可能会弄乱字符串(例如反斜杠)。
那么,如何转义字符串以在 JSON 对象中安全地来回传递它们?有没有一种简单的方法可以将它们转换为“安全”格式?
提前谢谢您!
这是我的字符串转义函数
RapidXML
:
#include <string>
#include <string_view>
#include <rapidjson/writer.h>
...
std::string escape_json_string(std::string_view str)
{
rapidjson::StringBuffer sb;
rapidjson::Writer<rapidjson::StringBuffer> writer(sb);
writer.String(str.data(), str.length());
return sb.GetString();
}
注意:它在字符串的开头和结尾添加
"
。