1

我有一个通过 REST 向网络公开的 C++ API。我已将应用程序编写为 FastCGI 进程。我能够使用正文中的数据发布到应用程序并取回文本。但现在,我想将数据作为 JSON 对象返回,而不是文本。

我已经将输出打包到 JSON 文件中。我只需要知道如何将其传递回请求者。

编辑:

我目前有这样的东西:http: //pastebin.com/vhC30kTJ

在此,我在 printcontent(string) 函数中打印文本。我使用 cout 打印的文本由 FastCGI 传回给 HTTP 请求者。我想改为传递 JSON,但我不知道该怎么做。我能够将数据写入 JSON 文件。我是传回 JSON 文件还是传回 json 样式字符串?我很困惑。

4

1 回答 1

2

理想情况下,形成 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");
于 2012-06-27T21:21:48.610 回答