#include #include #include #include #include using json = nlohmann::json; void callBack(const std_msgs::String::ConstPtr &data){ json j_data = json::parse(data->data); std::cout <<"original message"<< data->data << std::endl; // std::cout <<"parse message"<< j_data << std::endl; // std::cout <<"parse message"<< j_data["lat"] << std::endl; std::string k = j_data["lat"] , q = j_data["lon"]; int lat = std::stoi(k) ,lon = std::stoi(q); std::cout <<"lat:"<< j_data["lat"] << std::endl; std::cout <<"lon:"<< j_data["lon"] << std::endl; } int main(int argc ,char **argv) { // create JSON arrays std::string j,q,k; std_msgs::String mes; std::string data ="{\"lat\": \"241218859\", \"lon\": \"1206743161\", \"alt\": \"8489\", \"heading\": \"128\"}"; // std::string data = "{'lat': 241217244, 'lon': '1206741391', 'alt': '8937', 'heading': 8800}"; // std::string data ='"{"lat": "241218859", "lon": "1206743161", "alt": "8489", "heading": "128"}"'; // Init ROS node ros::init(argc, argv, "ros_node"); ros::NodeHandle json_node; // reate Assync spiner ros::AsyncSpinner spinner(0); spinner.start(); std::string rostopicName = "/uav_message"; // ros::Publisher data_pub = json_node.advertise(rostopicName,100); ros::Subscriber data_receive = json_node.subscribe(rostopicName,100,callBack); //ros::Subscriber data_receive1 = json_node.subscribe("/uav_message",100,callBack); mes.data = data; // while(ros::ok()){ // data_pub.publish(mes); // } // json j_no_init_list = json::array(); // json j_empty_init_list = json::array({}); // json j_nonempty_init_list = json::array({1, 2, 3, 4}); // json j_list_of_pairs = json::array({ {"one", 1}, {"two", 2} }); // json j_data_list = json::parse(data) ; // j = j_data_list["lat"]; // q = j_data_list["lon"]; // k = j_data_list["alt"]; // serialize the JSON arrays // std::cout << j_no_init_list << '\n'; // std::cout << j_empty_init_list << '\n'; // std::cout << j_nonempty_init_list << '\n'; // std::cout << j_list_of_pairs << '\n'; // while(true){ // std::cout << j_data_list << '\n'; // std::cout << j_data_list["lat"] << '\n'; // std::cout << std::stoi(j)<< std::stoi(q)<< std::stoi(k) << "\n"; // } ros::waitForShutdown(); return 0; }