Describe the bug
JsonVariantConst behaves different than JsonVariant:
If assigning a JsonArray to JsonVariantConst .is<JsonArray>() gives false (while JsonVariant::is<JsonArray>() gives true)
Troubleshooter report
does not apply - question 3 and 4 does not map to problem
Environment
Here is the environment that I used:
- online compiler
- local gcc
- Microcontroller: ESP32-S3
- ArduinoJson-v7.4.3
Reproduction
Here is a small snippet that reproduces the issue.
https://onecompiler.com/cpp/44ffv6mub
#include <iostream>
#include "ArduinoJson.h"
int main() {
JsonDocument doc;
// Add an array
JsonArray data = doc["data"].to<JsonArray>();
data.add(127);
data.add(255);
data.add(0);
JsonVariantConst varConst = data;
JsonVariant var = data;
std::cout <<"doc[\"data\"].is<JsonArray>(); " << doc["data"].is<JsonArray>() << std::endl;
std::cout <<"varConst.is<JsonArray>(); " << varConst.is<JsonArray>() << std::endl;
std::cout <<"var.is<JsonArray>(); " << var.is<JsonArray>() << std::endl;
}
Compiler output
n/a
Program output
Expected output:
doc["data"].is<JsonArray>(); 1
varConst.is<JsonArray>(); 1
var.is<JsonArray>(); 1
Actual output:
doc["data"].is<JsonArray>(); 1
varConst.is<JsonArray>(); 0 <-------
var.is<JsonArray>(); 1
Describe the bug
JsonVariantConstbehaves different thanJsonVariant:If assigning a
JsonArraytoJsonVariantConst.is<JsonArray>()givesfalse(whileJsonVariant::is<JsonArray>()givestrue)Troubleshooter report
does not apply - question 3 and 4 does not map to problem
Environment
Here is the environment that I used:
Reproduction
Here is a small snippet that reproduces the issue.
https://onecompiler.com/cpp/44ffv6mub
Compiler output
n/a
Program output
Expected output:
Actual output: