FastLED 3.9.15
Loading...
Searching...
No Matches

◆ as_array() [2/2]

fl::optional< JsonArray > fl::JsonValue::as_array ( ) const
inline

Definition at line 1074 of file json.h.

1076 {
1077 auto ptr = data.ptr<JsonArray>();
1078 if (ptr) return fl::optional<JsonArray>(*ptr);
1079
1080 // Handle specialized array types by converting them to regular JsonArray
1081 if (data.is<fl::vector<int16_t>>()) {
1082 auto audioPtr = data.ptr<fl::vector<int16_t>>();
1083 JsonArray result;
1084 for (const auto& item : *audioPtr) {
1085 result.push_back(fl::make_shared<JsonValue>(static_cast<int64_t>(item)));
1086 }
1087 return fl::optional<JsonArray>(result);
1088 }
1089
1090 if (data.is<fl::vector<uint8_t>>()) {
1091 auto bytePtr = data.ptr<fl::vector<uint8_t>>();
1092 JsonArray result;
1093 for (const auto& item : *bytePtr) {
1094 result.push_back(fl::make_shared<JsonValue>(static_cast<int64_t>(item)));
1095 }
1096 return fl::optional<JsonArray>(result);
1097 }
1098
1099 if (data.is<fl::vector<float>>()) {
1100 auto floatPtr = data.ptr<fl::vector<float>>();
1101 JsonArray result;
1102 for (const auto& item : *floatPtr) {
1103 result.push_back(fl::make_shared<JsonValue>(item)); // Use float directly
1104 }
1105 return fl::optional<JsonArray>(result);
1106 }
1107
void push_back(const T &value)
Definition vector.h:552
Optional< T > optional
Definition optional.h:14
shared_ptr< T > make_shared(Args &&... args)
Definition shared_ptr.h:348
fl::vector< fl::shared_ptr< JsonValue > > JsonArray
Definition json.h:170
HeapVector< T, Allocator > vector
Definition vector.h:1214
variant_t data
Definition json.h:678