我有一个通过REST向Web公开的C ++ API。我已将应用程序编写为FastCGI进程。我可以使用正文中的数据发布到应用程序并获取文本。但是现在,我希望将数据作为JSON对象返回,而不是文本。
我已将输出打包成JSON文件。我只需要知道如何将其传递给请求者。
编辑:
我目前有这样的事情:http://pastebin.com/vhC30kTJ
在此,我在printcontent(string)函数中打印文本。我使用cout打印的文本由FastCGI传递回HTTP请求者。我想传递JSON,我不知道该怎么做。我能够将数据写入JSON文件。我是否传回JSON文件或传回json样式字符串?我很迷惑。
答案 0 :(得分:1)
理想情况下,形成JSON的函数应该接受std::ostream &
的参数。然后,如果你想写一个文件,你传递std::ofstream
,如果你想把它写入标准输出(这是你想要做的,在这种情况下,它被发送到浏览器)你可以传递std::cout
。确保首先写出所需的HTTP标头和空行,否则服务器/浏览器会尝试将JSON解释为HTTP标头。
void makejson(ostream & output, string content)
{
/* output << "{\"some\":\"json\"}" */
}
// Write to file
ofstream file("data.json");
makejson(file, "somedata");
file.close();
// Write to browser
cout << "Content-Type: application/json\r\n\r\n";
makejson(cout, "somedata");