如何将变量用作原始 JSON 字符串中的数据?

How do you use variables as data in a raw JSON string?

本文关键字:字符串 数据 JSON 原始 变量      更新时间:2023-10-16

我正在使用C++中使用原始JSON字符串的API。例如:

string data = R"JSON({
"key1": "value1",
"key2": "value2"
})JSON";

我想使用变量作为值。例如:

string value1 = "55.2";
string value2 = "3.14";
string data = R"JSON({
"key1": value1,  //somehow use the string variables here
"key2": value2
})JSON";

这样的事情可能吗?

您可以使用operator+连接字符串。

#include <iostream>
#include <string>
int main() {
std::string value = "55.2";
std::string str = R"({"key1":)" + value + "}";
std::cout << str;
}

如果您只需要执行一次,则可以按照其他答案/注释的建议手动连接生成的字符串。

如果你可能需要做更多的事情(例如,为某些网络API构建巨大的JSON请求,或者解析回巨大的响应),请继续阅读:)

我非常不喜欢使用字符串operator+、字符串流、sprintf或任何其他字符串操作手动连接 JSON 的想法。

当您仅处理数字并且 JSON 较小时,任何基于字符串串联的解决方案都可能有效,但如果您需要将字符串值连接到 JSON 中,则一旦字符串中有"字符,您就会遇到麻烦。您需要进行适当的转义。此外,如果您连接的 JSON 对象变得很大,维护该代码将是一场噩梦。

解决 方案?

如果需要使用 C++,请查找为您执行 JSON 操作的库。有很多。通常最好使用经过测试的第三方代码来很好地解决此特定任务。是的,开始使用外部依赖项可能需要比手动连接字符串更多的时间,但它只会使代码更好。

如果你的任务与调用网络 API 和操作 JSON 密切相关,C++可能不是最好的语言选择,除非有其他注意事项(或者除非它是编程作业:))。现代脚本语言(Python,JavaScript,其他)原生支持JSON和网络调用。