Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在ArduinoIDE中解析json数组_Php_Json_Arduino - Fatal编程技术网

Php 如何在ArduinoIDE中解析json数组

Php 如何在ArduinoIDE中解析json数组,php,json,arduino,Php,Json,Arduino,我试图通过wifi解析Pi服务器上的JSON数组。我想分析以下内容: [{“设备”:“窗帘”,“值”:“1”},{“设备”:“风扇”,“值”:“1”},{“设备”:“百叶窗”,“值”:“0”},{“设备”:“继电器”,“值”:“0”}] 这些是从网页复制的: 下面是我的Arduino代码 #include <ArduinoJson.h> void setup() { Serial.begin(9600); while (!Serial) { // wait seri

我试图通过wifi解析Pi服务器上的JSON数组。我想分析以下内容:

[{“设备”:“窗帘”,“值”:“1”},{“设备”:“风扇”,“值”:“1”},{“设备”:“百叶窗”,“值”:“0”},{“设备”:“继电器”,“值”:“0”}]

这些是从网页复制的:

下面是我的Arduino代码

#include <ArduinoJson.h>

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    // wait serial port initialization
  }

  StaticJsonBuffer<200> jsonBuffer;    

  char   json[] =
  "[{\"Device\":\"Curtain\",\"Value\":\"1\"},{\"Device\":\"Fan\",\"Value\":\"1\"}]";


  JsonArray& root = jsonBuffer.parseArray(json);

  // Test if parsing succeeds.
  if (!root.success()) {
    Serial.println("parseObject() failed");
    return;
  }

  // Fetch values.

  const char* device[] = root["Device"];
          int value[] = root["Value"];

  // Print values.
  Serial.println(device);
  Serial.println(value);

}
#包括
无效设置(){
Serial.begin(9600);
而(!串行){
//等待串行端口初始化
}
静态jsonBuffer jsonBuffer;
char json[]=
“[{\'设备\':\'窗帘\',\'价值\':\'1\',{\'设备\':\'风扇\',\'价值\':\'1\'”;
JsonArray&root=jsonBuffer.parseArray(json);
//测试解析是否成功。
如果(!root.success()){
Serial.println(“parseObject()失败”);
返回;
}
//获取值。
常量字符*设备[]=根[“设备”];
int value[]=根[“值”];
//打印值。
串行打印LN(设备);
Serial.println(值);
}
然后我犯了一大堆错误

JsonParseExample.ino: In function 'void setup()':
JsonParseExample:54: error: invalid conversion from 'const char*' to 'size_t {aka unsigned int}' [-fpermissive]
In file included from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/JsonArray.hpp:181:0,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson.h:9,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:14,
                 from JsonParseExample.ino:8:
/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/JsonArray.ipp:16:27: error:   initializing argument 1 of 'ArduinoJson::JsonArraySubscript ArduinoJson::JsonArray::operator[](size_t)' [-fpermissive]
 inline JsonArraySubscript JsonArray::operator[](size_t index) {
                           ^
JsonParseExample:54: error: initializer fails to determine size of 'device'
JsonParseExample:54: error: array must be initialized with a brace-enclosed initializer
JsonParseExample:58: error: call of overloaded 'println(const char* [1])' is ambiguous
JsonParseExample.ino:58:24: note: candidates are:
In file included from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/Internals/../Internals/../Arduino/Print.hpp:87:0,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/Internals/../Internals/DummyPrint.hpp:10,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/Internals/../Internals/JsonPrintable.hpp:11,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/Internals/../JsonVariant.hpp:13,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/Internals/../JsonBuffer.hpp:15,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/Internals/BlockJsonBuffer.hpp:10,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson/DynamicJsonBuffer.hpp:10,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/../include/ArduinoJson.h:8,
                 from /Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:14,
                 from JsonParseExample.ino:8:
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:73:12: note: size_t Print::println(char) <near match>
     size_t println(char);
            ^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:73:12: note:   no known conversion for argument 1 from 'const char* [1]' to 'char'
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:74:12: note: size_t Print::println(unsigned char, int) <near match>
     size_t println(unsigned char, int = DEC);
            ^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:74:12: note:   no known conversion for argument 1 from 'const char* [1]' to 'unsigned char'
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:75:12: note: size_t Print::println(int, int) <near match>
     size_t println(int, int = DEC);
            ^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:75:12: note:   no known conversion for argument 1 from 'const char* [1]' to 'int'
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:76:12: note: size_t Print::println(unsigned int, int) <near match>
     size_t println(unsigned int, int = DEC);
            ^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:76:12: note:   no known conversion for argument 1 from 'const char* [1]' to 'unsigned int'
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:77:12: note: size_t Print::println(long int, int) <near match>
     size_t println(long, int = DEC);
            ^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:77:12: note:   no known conversion for argument 1 from 'const char* [1]' to 'long int'
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:78:12: note: size_t Print::println(long unsigned int, int) <near match>
     size_t println(unsigned long, int = DEC);
            ^
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Print.h:78:12: note:   no known conversion for argument 1 from 'const char* [1]' to 'long unsigned int'
JsonParseExample:59: error: 'value' was not declared in this scope
invalid conversion from 'const char*' to 'size_t {aka unsigned int}' [-fpermissive]
JsonParseExample.ino:在函数“void setup()”中:
JsonParseExample:54:错误:从“const char*”到“size_t{aka unsigned int}”[-fppermissive]的转换无效
在/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/./include/ArduinoJson/JsonArray.hpp:181:0中包含的文件中,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/./include/ArduinoJson.h:9,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:14,
来自JsonParseExample.ino:8:
/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/./include/ArduinoJson/JsonArray.ipp:16:27:错误:初始化'ArduinoJson::JsonArraySubscript ArduinoJson::JsonArray::operator[](size_t)[-fpermissive]的参数1
内联JsonArraySubscript JsonArray::运算符[](大小索引){
^
JsonParseExample:54:错误:初始值设定项无法确定“设备”的大小
JsonParseExample:54:error:array必须使用括号内的初始值设定项进行初始化
JsonParseExample:58:错误:重载“println(const char*[1])”的调用不明确
JsonParseExample.ino:58:24:注意:候选项包括:
在/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/./include/ArduinoJson/Internals/./Internals/./Arduino/Print.hpp:87:0中包含的文件中,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/。/include/ArduinoJson/Internals/。/Internals/DummyPrint.hpp:10,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/。/include/ArduinoJson/Internals/。/Internals/JsonPrintable.hpp:11,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/。/include/ArduinoJson/Internals/。/JsonVariant.hpp:13,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/。/include/ArduinoJson/Internals/。/JsonBuffer.hpp:15,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/./include/ArduinoJson/Internals/BlockJsonBuffer.hpp:10,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/./include/ArduinoJson/DynamicJsonBuffer.hpp:10,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/./include/ArduinoJson.h:8,
来自/Users/Wei0928/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson.h:14,
来自JsonParseExample.ino:8:
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:73:12:note:size\u t Print::println(字符)
打印的大小(字符);
^
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:73:12:注意:参数1从“const char*[1]”到“char”的转换未知
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:74:12:note:size\u t Print::println(无符号字符,int)
大小\u t println(无符号字符,int=DEC);
^
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:74:12:注意:参数1从“const char*[1]”到“unsigned char”的转换未知
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:75:12:note:size\u t Print::println(int,int)
尺寸(整数,整数=DEC);
^
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:75:12:注意:参数1从“const char*[1]”到“int”的转换未知
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:76:12:注意:size\u t Print::println(unsigned int,int)
大小\u t println(无符号整数,整数=DEC);
^
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:76:12:注意:参数1从“const char*[1]”到“unsigned int”的转换未知
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:77:12:注意:size\u t Print::println(长整数,整数)
尺寸(长,整数=12);
^
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:77:12:注意:参数1从“const char*[1]”到“long int”没有已知的转换
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:78:12:note:size\u t Print::println(长无符号整数,整数)
大小\u t println(无符号长,int=DEC);
^
/Applications/Arduino.app/Contents/Java/hardware/Arduino/avr/cores/Arduino/Print.h:78:12:注意:参数1从“const char*[1]”到“long unsigned int”的转换未知
JsonParseExample:59:错误:未在此作用域中声明“value”
从“const char*”到“size_t{aka unsigned int}”[-fppermissive]的转换无效
最重要的是,我还没有弄清楚如何单独读取数组。
感谢您的建议。

问题似乎在这里:

  const char* device[] = root["Device"];
          int value[] = root["Value"];
请注意,
root
是一个
JsonArray
,而不是
JsonObject
。因此,您无法访问ar
JsonObject *firstDeviceObject = root[0];
const char* firstDeviceName = firstDeviceObject["Device"];