을 기반으로 JSON 객체를 입력 나는 다음과 같은 JSON 객체있어 :재귀 문자열
{
"ESP_IN_PC_OUT":{
"track":{
"1":{
"mute":{
"type":"LED",
"pins":[4]
}
},
"2":{
"mute":{
"type":"LED",
"pins":[5]
}
}
}
}
}
나는 형식 "/ index1의/index2/INDEX3의 문자열에 따라 개체를 입력 할을 ... "(문자열은 OSC 메시지의 주소입니다.) 예를 들어, 이와 같은 "/ 트랙/2/뮤트"반환해야 JSON 오브젝트 :
{
"type":"LED",
"pins":[5]
}
그래서 타입, 핀 배열 및 나중에 구현 될 다른 어떤 값에 액세스 할 수있다.
저는 Arduino JSON library을 ESP8266에 사용하고 있습니다. 이 나에게 다음과 같은 오류 메시지를 제공하지만
#include <ArduinoJson.h>
char *jsonstr = "{\n \"ESP_IN_PC_OUT\":{\n \"track\":{\n \"1\":{\n \"mute\":{\n \"type\":\"LED\",\n \"pins\":[4]\n }\n },\n \"2\":{\n \"mute\":{\n \"type\":\"LED\",\n \"pins\":[5]\n }\n }\n }\n },\n\n\n \"ESP_OUT_PC_IN\":{\n \"analog\":{\n },\n \"digital\":{\n \"16\":\"/track/1/mute\"\n }\n }\n}";
void setup() {
Serial.begin(115200);
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(jsonstr);
if (!root.success()) {
Serial.println("parseObject() failed");
return;
}
Serial.println((const char*) root["ESP_IN_PC_OUT"]["track"]["2"]["mute"]["type"]); // prints "LED"
Serial.println();
char *address = "/track/2/mute"; // _____Interesting part_____
char *tmp = strtok(address,"/");
JsonObject& tmpJson = root["ESP_IN_PC_OUT"];
bool success = true;
while(tmp != NULL && success == true){
Serial.println(tmp);
if(tmpJson.containsKey(tmp)){
tmpJson = tmpJson[tmp]; // Error: use of deleted function 'ArduinoJson::JsonObject& ArduinoJson::JsonObject::operator=(const ArduinoJson::JsonObject&)'
tmp = strtok(NULL,"/");
} else {
success = false;
}
}
if(success == true){
Serial.println((const char*)tmpJson["type"]);
} else {
Serial.println("Address not found");
}
}
void loop() {
}
: 이것은 내가 해봤 코드입니다
JSON_OSC_settings2:26: error: use of deleted function 'ArduinoJson::JsonObject& ArduinoJson::JsonObject::operator=(const ArduinoJson::JsonObject&)'
tmpJson = tmpJson[tmp];
^
In file included from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson.hpp:12:0,
from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson.h:8,
from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/ArduinoJson.h:8,
from C:\Users\Pieter\Documents\Arduino\JSON_OSC_settings2\JSON_OSC_settings2.ino:1:
C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson/JsonObject.hpp:38:7: note: 'ArduinoJson::JsonObject& ArduinoJson::JsonObject::operator=(const ArduinoJson::JsonObject&)' is implicitly deleted because the default definition would be ill-formed:
class JsonObject : public Internals::JsonPrintable<JsonObject>,
^
In file included from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson/JsonArray.hpp:13:0,
from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson.hpp:11,
from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson.h:8,
from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/ArduinoJson.h:8,
from C:\Users\Pieter\Documents\Arduino\JSON_OSC_settings2\JSON_OSC_settings2.ino:1:
C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson/Internals/ReferenceType.hpp:32:18: error: 'ArduinoJson::Internals::ReferenceType& ArduinoJson::Internals::ReferenceType::operator=(const ArduinoJson::Internals::ReferenceType&)' is private
ReferenceType& operator=(const ReferenceType&);
^
In file included from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson.hpp:12:0,
from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson.h:8,
from C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/ArduinoJson.h:8,
from C:\Users\Pieter\Documents\Arduino\JSON_OSC_settings2\JSON_OSC_settings2.ino:1:
C:\Users\Pieter\Documents\Arduino\libraries\ArduinoJson-master/include/ArduinoJson/JsonObject.hpp:38:7: error: within this context
class JsonObject : public Internals::JsonPrintable<JsonObject>,
^
exit status 1
use of deleted function 'ArduinoJson::JsonObject& ArduinoJson::JsonObject::operator=(const ArduinoJson::JsonObject&)'
나는이 문제를 해결 할 수 있습니까? 어떤 다른 접근 방식을 취할 수 있습니까?
왜 참조를 재정의하려고합니까? – Sugar