查看: 176|回复: 6

[未解决] 请问PHP的json格式接口,arduinoJson库无法解析吗

[复制链接]

该用户从未签到

发表于 2021-5-4 17:06 | 显示全部楼层 |阅读模式
请求地址: http://xy.zerofc.cn/
返回结果:

{"results": [{"location": {"id": "WX4FBXXFKE4F","name": "Beijing","country": "CN","path": "Beijing,Beijing,China","timezone": "Asia/Shanghai","timezone_offset": "+08:00"},"now": {"text": "Cloudy","code": "4","temperature": "19"},"last_update": "2021-04-11T13:20:00+08:00"}]}


描述:
    上次刚接触arduino,也安装了arduinoJson库。可以正常解析本地模拟的json字符串,也可以解析心知天气的接口数据。但是当我自己用PHP写了一个接口时,一直无法解析成功,ardiunoJson库也切换过v5和v6都没有成功。请问哪位大神可以解答一下吗,可以直接请求我上面的那个地址解析。

该用户从未签到

发表于 2021-5-4 20:15 | 显示全部楼层
要先获取results,然后location,最后才可以获取里面的id等

该用户从未签到

 楼主| 发表于 2021-5-5 09:04 | 显示全部楼层
本帖最后由 北桥苏 于 2021-5-5 09:14 编辑
GeGeBoom 发表于 2021-5-4 20:15
要先获取results,然后location,最后才可以获取里面的id等

xy.zerofc.cn返回的json

xy.zerofc.cn返回的json

arduinoJson解析

arduinoJson解析
我解析后,打印里面的值,比如text或code都是空串。你可以把解析的方式截图给我看一下吗?

签到天数: 81 天

[LV.6]常住居民II

发表于 2021-5-5 11:53 | 显示全部楼层
本帖最后由 topdog 于 2021-5-5 11:56 编辑

Arduinojson 6 贴心地为广大爱好者提供了解析json数组的工具:
https://arduinojson.org/v6/assistant/
可以参考我的帖子:
https://www.arduino.cn/thread-92195-1-2.html

该用户从未签到

 楼主| 发表于 2021-5-5 14:45 | 显示全部楼层
topdog 发表于 2021-5-5 11:53
Arduinojson 6 贴心地为广大爱好者提供了解析json数组的工具:
https://arduinojson.org/v6/assistant/
可 ...

我试过别人写的接口都可以。但是我上面那个自己写的,同样也是返回json,不管是用v5还是v6都解析不了。

该用户从未签到

发表于 2021-5-5 16:33 | 显示全部楼层
本帖最后由 GeGeBoom 于 2021-5-5 16:36 编辑

  1. #include <WiFi.h>
  2. #include <HTTPClient.h>
  3. #include <ArduinoJson.h>

  4. void setup() {
  5.   Serial.begin(115200);
  6.   WiFi.begin("lvhejin", "1234567890");
  7.   while (WiFi.status() != WL_CONNECTED) {
  8.     delay(500);
  9.     Serial.print(".");
  10.   }

  11.   if (WiFi.status()) {
  12.     Serial.println(WiFi.macAddress());

  13.   }
  14. }

  15. void loop() {
  16.   if (WiFi.status() == WL_CONNECTED) {
  17.     HTTPClient http;
  18.     http.begin("http://xy.zerofc.cn/");
  19.     int httpCode = http.GET();
  20.     if (httpCode > 0) {
  21.       String Request_result = http.getString();
  22.       //Serial.println(Request_result);
  23.       
  24.       DynamicJsonBuffer jsonBuffer;
  25.       JsonObject& root = jsonBuffer.parseObject(Request_result);
  26.       String json1 = root["results"][0];
  27.       Serial.println(json1);
  28.       
  29.       DynamicJsonBuffer jsonBuffer1;
  30.       JsonObject& root1 = jsonBuffer1.parseObject(json1);
  31.       String json2 = root1["location"];
  32.       Serial.println(json2);

  33.       DynamicJsonBuffer jsonBuffer2;
  34.       JsonObject& root2 = jsonBuffer2.parseObject(json2);
  35.       String json3 = root2["id"];
  36.       Serial.println(json3);

  37.       Serial.println("");
  38.     }
  39.     else {
  40.       Serial.println("Invalid response!");
  41.     }
  42.     http.end();
  43.   }
  44.   delay(5000);

  45. }
复制代码


目前测试是正常的
Snipaste_2021-05-05_16-32-50.jpg

ArduinoJson.zip

244.56 KB, 下载次数: 1

该用户从未签到

 楼主| 发表于 2021-5-9 17:57 | 显示全部楼层
GeGeBoom 发表于 2021-5-5 16:33
目前测试是正常的

不知道是不是使用的WiFiClient原因,你发一下你的WiFi.h和HTTPClient.h这两个库文件给我吧,谢谢哈。

111.png
`RLTU]7P9MEJNLOH](AQV55.png

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

关于红外的求助
关于红外的求助
为什么红外发射出的跟我设定的不一样,如图,我两个板子一个发射,一个接收,我想要发
【Arduino】168种传感器模块系列实验(104)---MAX30102手腕心率
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
[Arduino物联网开发实战5]云端历史数据存储与查看
[Arduino物联网开发实战5]
blinker提供了历史数据存储与图表查看数据的功能。 设备端开发 在blinker的设计下,设
程序卡着不动,最后打印Freeheap 25427
程序卡着不动,最后打印Fr
各位有见过这个错误吗,程序跑到这里卡着不动
通过定时器读取串口数据出错
通过定时器读取串口数据出
各位大佬好,本人通过树莓派和Arduino通信,一边接收Arduino传感器数据,一边给Arduin
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表