49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
//
|
|
// Created by Yosuga on 2026/4/25.
|
|
//
|
|
|
|
#include "DeviceDataTransferObject.h"
|
|
|
|
DeviceDataTransferObject::DeviceDataTransferObject(
|
|
QString action,
|
|
QString deviceId,
|
|
QJsonObject payload
|
|
) : m_action(std::move(action))
|
|
, m_deviceId(std::move(deviceId))
|
|
, m_payload(std::move(payload))
|
|
{
|
|
}
|
|
|
|
DeviceDataTransferObject DeviceDataTransferObject::fromJson(const QJsonObject& json)
|
|
{
|
|
DeviceDataTransferObject obj;
|
|
obj.m_action = json.value("action").toString("device_command");
|
|
obj.m_deviceId = json.value("device_id").toString("");
|
|
QJsonValue payloadVal = json.value("payload");
|
|
if (payloadVal.isString()) {
|
|
obj.m_payload["rpc_call"] = payloadVal.toString();
|
|
} else if (payloadVal.isObject()) {
|
|
obj.m_payload = payloadVal.toObject();
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
QJsonObject DeviceDataTransferObject::toJson() const
|
|
{
|
|
QJsonObject json;
|
|
json["action"] = m_action;
|
|
if (!m_deviceId.isEmpty()) {
|
|
json["device_id"] = m_deviceId;
|
|
}
|
|
json["payload"] = m_payload;
|
|
return json;
|
|
}
|
|
|
|
DeviceDataTransferObject& DeviceDataTransferObject::setData(const QString& key, const QJsonValue& value)
|
|
{
|
|
if (key == "action") m_action = value.toString();
|
|
else if (key == "device_id") m_deviceId = value.toString();
|
|
else if (key == "payload") m_payload = value.toObject();
|
|
return *this;
|
|
}
|