#pragma once #ifndef ANSCLOUD_COMMON_JSON_SERIALIZER_H #define ANSCLOUD_COMMON_JSON_SERIALIZER_H #include "types.h" #include #include namespace anscloud { namespace json { // Serialization (struct -> JSON string) std::string serialize(const Heartbeat& hb); std::string serialize(const DeviceTelemetry& tel); std::string serialize(const SystemMetrics& m); std::string serialize(const Command& cmd); std::string serialize(const CommandResponse& resp); std::string serialize(const DeviceEvent& evt); std::string serialize(const DeviceStatusMessage& msg); std::string serialize(const CameraInfo& cam); std::string serialize(const std::vector& cams); std::string serialize(const DeviceState& state); std::string serialize(const std::vector& states); std::string serialize(const CommandResult& result); // Deserialization (JSON string -> struct) Heartbeat deserialize_heartbeat(const std::string& json); DeviceTelemetry deserialize_telemetry(const std::string& json); SystemMetrics deserialize_metrics(const std::string& json); Command deserialize_command(const std::string& json); CommandResponse deserialize_response(const std::string& json); DeviceEvent deserialize_event(const std::string& json); DeviceStatusMessage deserialize_status_message(const std::string& json); CameraInfo deserialize_camera(const std::string& json); std::vector deserialize_cameras(const std::string& json); DeviceState deserialize_device_state(const std::string& json); std::vector deserialize_device_states(const std::string& json); CommandResult deserialize_command_result(const std::string& json); // Utility std::string now_iso8601(); std::string generate_uuid(); } // namespace json } // namespace anscloud #endif // ANSCLOUD_COMMON_JSON_SERIALIZER_H