Skip to content

Commit c140e24

Browse files
committed
fix: handle JsonObject
1 parent d86bd50 commit c140e24

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

src/Capabilities/SettingController.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ bool SettingController<T>::handleSettingController(SinricProRequest &request) {
6161
settingValue = valueVariant.as<float>();
6262
} else if (valueVariant.is<int>()) {
6363
settingValue = valueVariant.as<int>();
64+
} else if (valueVariant.is<JsonObject>()) {
65+
String jsonString;
66+
serializeJson(valueVariant, jsonString);
67+
settingValue = jsonString;
6468
} else if (valueVariant.is<const char*>()) {
6569
settingValue = String(valueVariant.as<const char*>());
6670
}
@@ -69,7 +73,9 @@ bool SettingController<T>::handleSettingController(SinricProRequest &request) {
6973

7074
request.response_value[FSTR_SETTING_id] = settingId;
7175

72-
if (std::holds_alternative<int>(settingValue)) {
76+
if (valueVariant.is<JsonObject>()) {
77+
request.response_value[FSTR_SETTINGS_value] = valueVariant;
78+
} else if (std::holds_alternative<int>(settingValue)) {
7379
request.response_value[FSTR_SETTING_value] = std::get<int>(settingValue);
7480
} else if (std::holds_alternative<float>(settingValue)) {
7581
request.response_value[FSTR_SETTING_value] = std::get<float>(settingValue);

src/SinricProModuleCommandHandler.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ bool SinricProModuleCommandHandler::handleRequest(SinricProRequest &request) {
8888
settingValue = valueVariant.as<float>();
8989
} else if (valueVariant.is<int>()) {
9090
settingValue = valueVariant.as<int>();
91+
} else if (valueVariant.is<JsonObject>()) {
92+
String jsonString;
93+
serializeJson(valueVariant, jsonString);
94+
settingValue = jsonString;
9195
} else if (valueVariant.is<const char*>()) {
9296
settingValue = String(valueVariant.as<const char*>());
9397
}
@@ -96,7 +100,9 @@ bool SinricProModuleCommandHandler::handleRequest(SinricProRequest &request) {
96100

97101
request.response_value[FSTR_SETTINGS_id] = id;
98102

99-
if (std::holds_alternative<int>(settingValue)) {
103+
if (valueVariant.is<JsonObject>()) {
104+
request.response_value[FSTR_SETTINGS_value] = valueVariant;
105+
} else if (std::holds_alternative<int>(settingValue)) {
100106
request.response_value[FSTR_SETTINGS_value] = std::get<int>(settingValue);
101107
} else if (std::holds_alternative<float>(settingValue)) {
102108
request.response_value[FSTR_SETTINGS_value] = std::get<float>(settingValue);

0 commit comments

Comments
 (0)