请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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;
}