【问题标题】:how to get "users_list" from this json response using boost package [closed]如何使用 boost 包从这个 json 响应中获取“users_list”[关闭]
【发布时间】:2018-08-25 14:46:38
【问题描述】:

我目前正在使用 C++ 调用应用程序。我有一个 json 响应作为字符串。我想解析 json 数据。我使用了 boost 包来获取 json数据。我想使用 boost 从 json 中获取 users_list 键。请回复步骤。提前谢谢.....

{"action":"refresh_dashboard","data":{"users_list":[{"user_id":"901e6076ff351cfc2195fb86f8438a26","extensions":["1002"],"name":"Karthik M"} ,{"user_id":"7d617ef5b2390d081d901b0d5cd108eb","extensions":["1015"],"name":"Synway User2"},{"user_id":"c8f667f7d663e81f6e7fa34b9296f067","extensions":["1012"]," name":"Rahib Video"},{"user_id":"cc3f94ecc14ee9c55670dcde9adc1887","extensions":["1006"],"name":"Rounak S Kiran"},{"user_id":"6c29ebdb34e1761fdf9423c573087979","extensions ":["1003"],"name":"Amar Nath"},{"user_id":"8e15c2d95d4325cb07f0750846966be8","extensions":["1011"],"name":"TLS 用户"},{"user_id ":"2fc4142bdacf83c1957bda0ad9d50e3d","extensions":["1014"],"name":"Synway User1"},{"user_id":"74d5b5a9aca1faa4c2f217ce87b621d8","extensions":["1008"],"name":" Robin Raju"},{"user_id":"a7ad7e73bf93ea83c8efdc1723cba198","extensions":["1007"],"name":"Arshad Arif"},{"user_id":"b55146df593ec8d09e5fe12a8a4c1108","extensions":["1001 "],"name":"Rahib Rasheed"},{"user_id":"391391de005a8f5403c7b5591f462ea1" ,"扩展":["1013"],"name":"Sangeeth J"},{"user_id":"3258f7ae4ae1db60435cbcf583f64a89","extensions":["1009"],"name":"Aby TL"}, {"user_id":"90bc84e5e8a3427fe35e99bd4386de95","extensions":["1010"],"name":"Prince T"},{"user_id":"b501ef5b270a196afc0eed557ca74237","extensions":["1005"],"name ":"Jineed AJ"},{"user_id":"1422af351e06adeab2de92f5a633a444","extensions":["1004"],"name":"Ashok PA"}],"busy_users":[],"reg_users":[ {"user_id":"901e6076ff351cfc2195fb86f8438a26","status":"registered"},{"user_id":"6c29ebdb34e1761fdf9423c573087979","status":"registered"}],"contacts":[{"owner_id":"901e6076ff351cfc ,"status":"ready"},{"owner_id":"6c29ebdb34e1761fdf9423c573087979","status":"ready"}]}}

【问题讨论】:

  • 是的,你可以做到
  • 先生。如何获取该 users_list。
  • 很抱歉,但这不是本网站的运作方式。在我们为您提供帮助之前,您需要展示您的所作所为。
  • std::istringstream is(ss); ptree pt; read_json(is, pt); std::cout ("action") ("") ("user_id")

标签: c++ boost


【解决方案1】:

有几个C++ 库可以帮助您解析json 字符串。你可以使用jsoncpp。然后你可以这样写:

Json::Value data;
Json::CharReaderBuilder reader;
std::string errs;
std::stringstream ss;
ss << inp_string;

if (Json::parseFromStream(reader, ss, &data, &errs))
{
    const Json::Value users_list = data["data"];
}

使用asString() 方法或类似方法从users_list 中提取字段作为string

【讨论】:

  • 我用过 jsoncpp 。我已经从 nuget.but 添加了包,但在构建后显示了一些构建错误。这就是我使用 boost 的原因。
  • 先生,你用过 boost 吗?
  • 我认为在我写答案时没有特别提到boost。对不起,如果我错过了。
  • 不,我没有使用boost 来解析json
  • 我已经尝试过这篇文章。但就我而言,这有点困难。stackoverflow.com/questions/31345401/…
【解决方案2】:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

using boost::property_tree::ptree;

int main() {
    std::string ss = "{ \"action\" : \"refresh_dashboard\", \"data\" : [{ \"user_id\" : \"901e6076ff351cfc2195fb86f8438a26\" }, { \"user_id\" : \"901e6076ff351cfc2195fb86f8438a26\" }, { \"data\" : \"901e6076ff351cfc2195fb86f8438a26\" }] }";

    ptree pt;
    std::istringstream is(ss);
    read_json(is, pt);

    std::cout << "id:     " << pt.get<std::string>("action") << "\n";

    for (auto& e : pt.get_child("data")) {
        std::cout << "stuff name: " << e.second.get<std::string>("user_id") << "\n";
    }
}

【讨论】:

  • 在这种情况下它会起作用。
  • 这种情况下我可以解析数据。但这不是我的实际反应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2020-10-17
  • 2022-08-18
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
相关资源
最近更新 更多