В вашем коде и методе Arduino Json нет ничего плохого,
{'a':'b'} "{"a":"b"}" {\"a\":\"b\"}
не является ни действительным JSON объектом, ни сериализованным строковым представлением объекта JSON.
Если JSON состоит из нескольких объектов, правильный формат должен быть:
[{"a": "b"},{"a": "b"},{"a": "b"}]
и с сериализованным строковым представлением должен быть таким:
"[{\"a\": \"b\"},{\"a\": \"b\"},{\"a\": \"b\"}]"
Всегда полезно использовать один из этих онлайн JSON Validator для проверки вашего JSON объекта во время разработки.
Обновление
Похоже, что вы обновили свой вопрос, основываясь на вашем обновлении, в вашем коде есть две проблемы:
- если объект JSON равен
{"a":"b"}
, то в десериализованных данных нет doc["value"]
, это должно быть doc["a"]
для доступа к значению "b"
. doc["a"]
не будет int
, как в ваших int value = doc["value"]
, doc["value"]
возвращает указатель на char
.
Здесь будет код, который выдает правильное значение.
void loop() {
char s[] = "{\"a\":\"b\"}";
StaticJsonDocument<200> doc;
DeserializationError error = deserializeJson(doc, s);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.c_str());
return;
}
const char* value = doc["a"];
Serial.println(value);
while(1) {};
}