Files
ANSCMSCORE/anscloud-common/include/anscloud/common/json_serializer.h
2026-03-28 12:05:34 +11:00

48 lines
2.0 KiB
C++

#pragma once
#ifndef ANSCLOUD_COMMON_JSON_SERIALIZER_H
#define ANSCLOUD_COMMON_JSON_SERIALIZER_H
#include "types.h"
#include <string>
#include <vector>
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<CameraInfo>& cams);
std::string serialize(const DeviceState& state);
std::string serialize(const std::vector<DeviceState>& 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<CameraInfo> deserialize_cameras(const std::string& json);
DeviceState deserialize_device_state(const std::string& json);
std::vector<DeviceState> 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