c++ - 从 C++ 返回 JSON 对象到 HTTP POST REST 调用

标签 c++ json web-services http fastcgi

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

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

编辑:

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

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

最佳答案

理想情况下,构成 JSON 的函数应该接受 std::ostream & 的参数。然后,如果你想写一个文件,你传入一个 std::ofstream ,如果你想把它写到标准输出(这就是你想在这种情况下做的,所以它被发送到浏览器)你可以传入 std::cout。确保先写出所需的 HTTP header 和空行,否则服务器/浏览器将尝试将 JSON 解释为 HTTP header 。

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");

关于c++ - 从 C++ 返回 JSON 对象到 HTTP POST REST 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234378/

相关文章:

php - 如何强制仅从 API 响应中提取 JSON 数据?

ajax - 如何将基于 Spring + Hibernate 的应用程序后端与纯 HTML 和基于 AJAX 的客户端连接?

java - JAX-WS 端点仅部分转义 XML 字符串

c++ - Objective-C++ ARC 和 C++ 容器

c++ - cilk reduce 是如何完成的(thread vs smid)

java - 我应该使用Java还是C++进行面向对象的设计类?

json - UITableview在numberOfRowsInSection崩溃; NSDictionary中的Json到UITableview

c++ - 带有可变参数模板的自定义容器 emplace

java - JSON ORDER_MAP_ENTRIES_BY_KEYS 工作不一致

php - 相当于PHP的Java Webservice Client UsernameToken