请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3100SDK 您好!
在向 HTTP 服务器(api.thinspeak.com)发出请求后、我在解析 JSON 方面遇到问题。 它说初始化 JSON 解析器失败。 当我尝试对其进行调试时,jsmn_pars()函数会以值0退出。 我希望服务器返回一个 JSON 有效载荷、如下图所示(当我尝试使用 postman 时)。
当我使用原始的 http_client 演示(使用 httpbin.org 作为服务器)时、不会发生此问题。 已成功解析 JSON。
这使我感到困惑、因为两台服务器都返回 JSON 有效载荷。
如果有人能帮助我、我将不胜感激。 谢谢你
祝你一切顺利、
Ikhwan
代码涉及:
/*! 此函数将解析 JSON 数据 \param[in] PTR -指向 JSON 数据的指针 返回 0表示成功、否则为-ve 注意 \warning */ _i32 ParseJSONData (_i8 * ptr) { _i32 RetVal = 0; _i32 noOfToken; jsmn_parser 解析器; jsmntok_t *标记列表; _i8 printBuffer[4]; /*初始化 JSON 解析器*/ jsmn_init (&parser); /*获取流中 JSON 令牌的数量,因为我们不知道需要传递多少个令牌*/ noOfToken = jsmn_parse (&parser、(const char *) ptr、strlen ((const char *) ptr)、NULL、10); if (noOfToken <= 0) { CLI_Write ("初始化 JSON 解析器失败\n\r\n); 返回-1; } /*分配内存以存储令牌*/ tokenList =(jsmntok_t *) malloc (noOfToken* sizeof (jsmntok_t)); if (tokenList ==空) { cli_Write ("分配内存失败\n"); 返回-1; } /*再次初始化 JSON 解析器*/ jsmn_init (&parser); noOfToken = jsmn_parse (&parser、(const char *) ptr、strlen ((const char *) ptr)、tokenList、noOfToken); if (noOfToken < 0) { cli_Write (" Failed to parse JSON tokents\n\r"); RetVal = noOfToken; } 其他 { cli_Write("成功解析"); // sprintf ((char *) printBuffer、"%ld"、noOfToken); cli_Write ((_u8 *) printBuffer); cli_Write (" JSON 令牌\n\r\n); } FREE (tokenList); 返回 RetVal; }