我正在使用使用原始JSON字符串的C ++ 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";
像这样可能吗?
答案 0 :(得分:3)
您可以使用operator+
连接字符串。
#include <iostream>
#include <string>
int main() {
std::string value = "55.2";
std::string str = R"({"key1":)" + value + "}";
std::cout << str;
}
答案 1 :(得分:2)
如果只需要执行一次,则可以遵循其他答案/评论中的建议,并手动将结果字符串连接起来。
如果您可能还需要做更多的事情(例如,为某个网络API构建巨大的JSON请求或将巨大的响应解析回去),请继续阅读:)
我非常不喜欢使用字符串operator+
,字符串流,sprintf
或任何其他字符串操作手动连接JSON的想法。
当仅使用数字并且JSON较小时,任何基于字符串连接的解决方案都可能有效,但是如果您需要将字符串值连接到JSON,则一旦遇到{{1} }或字符串中的"
字符。您需要进行适当的转义。另外,如果您串联的JSON对象变大,那么维护该代码将是一场噩梦。
解决方案?
如果需要使用C ++,请找到一个为您执行JSON操作的库。有plenty。通常最好使用经过测试的第三方代码来很好地解决此特定任务。是的,开始使用外部依赖关系比手动连接字符串可能要花费更多时间,但这只会使代码变得更好。
如果您的任务与调用网络API和操作JSON密切相关,除非有其他考虑(或除非是编程任务,否则),C ++可能不是最佳选择。现代脚本语言(Python,JavaScript和其他语言)原生支持JSON和网络调用。