p =cJSON_GetObjectItem(ptJson, "card")->valueString;
cJSON *cJSON_GetObjectItem(cJSON *object,const char *string)
{
cJSON *c=object->child;
//BAS_LOG(BAS_LOGDEBUG, 0, 0, "begin");
while (c && cJSON_strcasecmp(c->string,string))
{
//BAS_LOG(BAS_LOGDEBUG, 0, 0, "test[%s]",c->string);
c=c->next;
}
//BAS_LOG(BAS_LOGDEBUG, 0, 0, "end");
return c;
}
BAS_EXPORT static int cJSON_strcasecmp(const char *s1,const char *s2)
{
if (!s1)
return (s1==s2)?0:1;
if (!s2)
return 1;
for(; tolower(*s1) == tolower(*s2); ++s1, ++s2)
{
if(*s1 == 0)
return 0;
}
return tolower(*(const unsigned char *)s1) - tolower(*(const unsigned char *)s2);
}
在Linux环境时候,读取json文件中不存在的字段时,cJSON_GetObjectItem卡死,产生core。
没有这个字段,则cJSON_GetObjectItem返回NULL。空指针指向子域,报错。