Мой Arduino получает через TCP json, который выглядит следующим образом:
{"Order":9,"SenderID":"Master","Params":{"newSolution":"35"}}
Я анализирую это, используя #include <ArduinoJson.h>
как это:
void Connectivity::ProcessNewMessage(char* topic, byte* payload, unsigned int length)
{
StaticJsonDocument<80> doc;
DeserializationError err = deserializeJson(doc, payload);
if (err) {
Serial.print(F("deserializeJson() failed with code "));
Serial.println(err.c_str());
}
else
{
//we get the Order, or 99 if Order is not set. JsonDeserializer never makes exceptions
//So the only way to know something was wrong is provide unexpected values as Order 99
int Order = doc["Order"] | 99;
switch(Order)
{
case 9:
{
//here I need to access the new solution that is
//in the Params.
const char* serializedParams = (const char*) doc["Params"];
Serial.println("testing 1:");
Serial.println(serializedParams);
Serial.println("++++1");
DeserializationError err = deserializeJson(doc, serializedParams);
if (err) {
Serial.print(F("deserializeJson() failed with code "));
Serial.println(err.c_str());
}
else
{
//here the code when everything works
}
}
}
Это вывод Iполучить при запуске вещи:
---
internal: Message arrived [master/Arduino]
{"Order":9,"SenderID":"Master","Params":{"newSolution":"35"}}
testing 1:
++++1
deserializeJson() failed with code IncompleteInput`
Как вы можете видеть Params IS во входящем json, но при попытке получить к нему доступ, он пуст.Есть идеи ??Я опытный C # кодер, но C ++ и все типы символов char * const char очень старые для меня ..:)