请选择 进入手机版 | 继续访问电脑版
论坛
登录 | 立即注册
查看: 1543|回复: 0

ESP8266 接入心知天气后,怎么解析服务器返回来的json数据

[复制链接]

1

主题

1

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2018-1-17 13:57:00 | 显示全部楼层 |阅读模式
  1. void ICACHE_FLASH_ATTR user_tcp_recv_cb(void *arg, char *pdata,
  2.                 unsigned short len)
  3. {

  4.         cJSON *json,*json1;
  5.         cJSON *arrayItem;
  6.         cJSON *object;
  7.         cJSON *item;
  8.         uint8 i;
  9.         int size1;
  10.         char *PA = pdata;
  11.         uint8 id[12];
  12.         uart0_sendStr("\r\n ----- 开始接受数据----- \r\n ");
  13.         while(*PA!='{')
  14.         {
  15.                 PA++;
  16.         }
  17.         json = cJSON_Parse(PA);//生成json树了
  18.         arrayItem = cJSON_GetObjectItem(json,"result");//生成树的名字
  19.         size1 = cJSON_GetArraySize(arrayItem);
  20.         for(i=0;i<1;i++)
  21.         {
  22.                 object = cJSON_GetArrayItem(arrayItem,i);//第i个元组的内容
  23.                 item=cJSON_GetObjectItem(object,"location");
  24.                 json1 = cJSON_GetObjectItem(object, "id");//第一个对象
  25.                 memcpy(id,json1->valuestring,strlen(json1->valuestring));
  26.                 uart0_tx_buffer(json1->valuestring, strlen(json1->valuestring));

  27.         }
  28.         cJSON_Delete(json1);
  29.         cJSON_Delete(json);
  30.         uart0_sendStr("\r\n -----结束接受数据-----  \r\n ");


  31. }
  32. 下载编译后的固件,得到的结果是


  33. Fatal exception 28(LoadProhibitedCause):
  34. epc1=0x40205ef4, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000010, depc=0x00000000

  35. ets Jan  8 2013,rst cause:2, boot mode:(3,7)

  36. load 0x40100000, len 816, room 16
  37. tail 0
  38. chksum 0x8d
  39. load 0x3ffe8000, len 788, room 8
  40. tail 12
  41. chksum 0xcf
  42. ho 0 tail 12 room 4
  43. load 0x3ffe8314, len 288, room 12
  44. tail 4
  45. chksum 0xcf
  46. csum 0xcf

  47. 2nd boot version : 1.2
  48.   SPI Speed      : 40MHz
  49.   SPI Mode       : QIO
  50.   SPI Flash Size : 4Mbit
  51. jump to run user1




  52. 然后去找错误处
  53. 40205ee9:    00fe45            call0    40206ed0 <cJSON_GetObjectItem>
  54.         json1 = cJSON_GetObjectItem(object, "id");//第一个对象
  55. 40205eec:    ffed31            l32r    a3, 40205ea0 <user_tcp_discon_cb+0x24>
  56. 40205eef:    0c2d          mov.n    a2, a12
  57. 40205ef1:    00fdc5            call0    40206ed0 <cJSON_GetObjectItem>
  58.         memcpy(id,json1->valuestring,strlen(json1->valuestring));
  59. 40205ef4:    42c8          l32i.n    a12, a2, 16
  60.     size1 = cJSON_GetArraySize(arrayItem);
  61.     for(i=0;i<1;i++)
  62.     {
  63.         object = cJSON_GetArrayItem(arrayItem,i);//第i个元组的内容
  64.         item=cJSON_GetObjectItem(object,"location");
  65.         json1 = cJSON_GetObjectItem(object, "id");//第一个对象
  66. 40205ef6:    02ed          mov.n    a14, a2
  67.         memcpy(id,json1->valuestring,strlen(json1->valuestring));
  68. 40205ef8:    0c2d          mov.n    a2, a12
  69. 40205efa:    ff3c01            l32r    a0, 40205bec <user_esp_dns_found+0x54>
  70. 40205efd:    0000c0            callx0    a0
  71. 40205f00:    024d          mov.n    a4, a2
  72. 40205f02:    0c3d          mov.n    a3, a12




  73. 不知道该怎那么做了,大家有解析json的方法吗,实在不知道该怎么做了
复制代码

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|安信可论坛    

GMT+8, 2020-7-8 07:21 , Processed in 0.018124 second(s), 14 queries , Redis On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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