boost json 解析数组_boost解析json数组

利用boost 自带的json库,解析数组,json格式如下:

  1. {
  2. "roomId":"room_123",
  3. "pubUid":"uid1",
  4. "subList":[
  5. "uid2",
  6. "uid3",
  7. "uid4"
  8. ]
  9. }

解析代码:

  1. #include <boost/asio.hpp>
  2. #include <boost/shared_ptr.hpp>
  3. #include <boost/thread.hpp>
  4. #include <boost/thread/mutex.hpp>
  5. #include <boost/bind.hpp>
  6. #include <iostream>
  7. #include <map>
  8. #include <vector>
  9. #include <boost/property_tree/ptree.hpp>
  10. #include <boost/property_tree/json_parser.hpp>
  11. int main(int argc, char *argv[])
  12. {
  13. string json_info = json数据;
  14. boost::property_tree::ptree parse_root;
  15. boost::property_tree::ptree positions_array;
  16. std::stringstream strStream(json_info);
  17. boost::property_tree::read_json(strStream, parse_root);
  18. string room_id, pubUid;
  19. vector<string> vec_subId;
  20. try
  21. {
  22. room_id = parse_root.get<string>("roomId");
  23. pubUid = parse_root.get<string>("pubUid");
  24. positions_array = parse_root.get_child("subList");
  25. boost::property_tree::ptree::iterator pos = positions_array.begin();
  26. for (; pos != positions_array.end(); ++pos)
  27. {
  28. boost::property_tree::ptree item = pos->second;
  29. string uid = item.get<string>("");
  30. vec_subId.push_back(uid);
  31. }
  32. }
  33. catch (boost::property_tree::ptree_error const &e)
  34. {
  35. return 0;
  36. }
  37. }