分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Jayesh

编写C++ Json Request - Preparing C++ Json Request

  •  1
  • Jayesh  · 技术社区  · 1 周前

    我正在尝试用C++编写JSON请求。这样地:

    string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    
    std::string data = "{\n"
    "    \"foo\": key\n"
    "}";
    

    当我打印这个时,它显示如下:

    "foo": key
    

    但我需要这样:

    "foo": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    

    所以,请有人帮我。怎么做?事先谢谢。

    抱歉我的英语不好。

    3 回复  |  直到 1 周前
        1
  •  1
  •   simplicio    1 周前

    C++不在字符串常量中展开变量,因此如果在这样的字符串中有“KEY”,它将被解释为字符串“KEY”,而不是作为变量展开。

    您要做的是将变量“key”的内容与字符串的其余部分连接起来。在C++中,您可以用级联操作符“+”来实现这一点。

    所以你需要这样的东西:

    std::string data = "{\n"
    "    \"foo\": " + key + "\n"
    "}"
    
        2
  •  2
  •   Ashwani Dausodia    1 周前

    不能期望字符串 key 替换为变量值 钥匙 .虽然有些语言支持字符串插值,但据我所知 c++ 没有。您可以通过连接前面的字符串来创建JSON字符串。 钥匙 ,的 钥匙 ,并在之后字符串 钥匙

    std::string data = "{\n \"foo\": " + key + "\n}";
    
        3
  •  1
  •   alon    1 周前
      std::string key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
      std::string data = "{\n"
      "    \"foo\": ";
      data += key;
      data += "\n"
      "}";
    
        4
  •  0
  •   ΦXocę 웃 Пepeúpa ツ    1 周前

    你当然可以按照别人的建议去做:

    std::string data = "{\n\"foo\":" + key + "\n}";
    

    但是您可以使用(我建议您)一个名为nlohmann::json的好lib。

    然后做:

    nlohmann::json j;
    std::string k{"123-ABC"};
    j["foo"] = k;
    std::cout << j.dump();
    //prints {"foo":"123-ABC"}
    std::cout << j.dump(2);
    //prints:
    //    {
    //      "foo": "123-ABC"
    //    }