请问PHP的json格式接口,arduinoJson库无法解析吗-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3684|回复: 8

[未解决] 请问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都是空串。你可以把解析的方式截图给我看一下吗?
发表于 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, 下载次数: 7

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

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

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

 楼主| 发表于 2021-5-11 00:07 | 显示全部楼层

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 06:30 , Processed in 0.077309 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表