Program Listing for File object_json.hpp
↰ Return to documentation for file (/tmp/ws/src/tuw_msgs/tuw_object_map_msgs/include/tuw_object_map_msgs/object_json.hpp
)
#ifndef TUW_OBJECT_MAP_MSGS__OBJECT_JSON_HPP_
#define TUW_OBJECT_MAP_MSGS__OBJECT_JSON_HPP_
#include <tuw_geometry_msgs/point_json.hpp>
#include <tuw_object_map_msgs/geo_point_json.hpp>
#include <tuw_object_map_msgs/object.hpp>
namespace tuw_json
{
inline Json::Value toJson(const tuw_object_map_msgs::msg::Object & src)
{
Json::Value json;
json["id"] = src.id;
json["type"] = src.type;
Json::Value geo_points;
for (const auto & p : src.geo_points) {
geo_points.append(toJson(p));
}
json["geo_points"] = geo_points;
Json::Value map_points;
for (const auto & p : src.map_points) {
map_points.append(toJson(p));
}
json["map_points"] = map_points;
Json::Value enflation_radius;
for (const auto & p : src.enflation_radius) {
enflation_radius.append(p);
}
json["enflation_radius"] = enflation_radius;
Json::Value bondary_radius;
for (const auto & p : src.bondary_radius) {
bondary_radius.append(p);
}
json["bondary_radius"] = bondary_radius;
return json;
}
inline tuw_object_map_msgs::msg::Object & fromJson(
const Json::Value & json, tuw_object_map_msgs::msg::Object & des)
{
des.id = json.get("id", "-1").asInt64();
des.type = json.get("type", "").asUInt();
if (json.isMember("geo_points") && json["geo_points"].isArray()) {
const Json::Value & jsonArray = json["geo_points"];
for (auto & j : jsonArray) {
tuw_object_map_msgs::msg::GeoPoint p;
des.geo_points.push_back(std::move(tuw_json::fromJson(j, p)));
}
}
if (json.isMember("map_points") && json["map_points"].isArray()) {
const Json::Value & jsonArray = json["map_points"];
for (auto & j : jsonArray) {
geometry_msgs::msg::Point p;
des.map_points.push_back(std::move(tuw_json::fromJson(j, p)));
}
}
if (json.isMember("enflation_radius") && json["enflation_radius"].isArray()) {
const Json::Value & jsonArray = json["enflation_radius"];
for (auto & j : jsonArray) {
des.enflation_radius.push_back(j.asDouble());
}
}
if (json.isMember("bondary_radius") && json["bondary_radius"].isArray()) {
const Json::Value & jsonArray = json["bondary_radius"];
for (auto & j : jsonArray) {
des.bondary_radius.push_back(j.asDouble());
}
}
return des;
}
} // namespace tuw_json
#endif // TUW_OBJECT_MAP_MSGS__OBJECT_JSON_HPP_