mirror of
https://github.com/DaveGamble/cJSON.git
synced 2023-08-10 21:13:26 +03:00
Helper function to check the type of an item
This is necessary, because you can get it wrong if you do it manually. (when you forget the & 0xFF in the comparison)
This commit is contained in:
parent
501046247d
commit
c26d53f0d7
100
cJSON.c
100
cJSON.c
@ -2149,3 +2149,103 @@ void cJSON_Minify(char *json)
|
||||
/* and null-terminate. */
|
||||
*into = '\0';
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsInvalid(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_Invalid;
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsFalse(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_False;
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsTrue(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xff) == cJSON_True;
|
||||
}
|
||||
|
||||
|
||||
extern cjbool cJSON_IsBool(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & (cJSON_True | cJSON_False)) != 0;
|
||||
}
|
||||
extern cjbool cJSON_IsNull(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_NULL;
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsNumber(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_Number;
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsString(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_String;
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsArray(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_Array;
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsObject(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_Object;
|
||||
}
|
||||
|
||||
extern cjbool cJSON_IsRaw(const cJSON * const item)
|
||||
{
|
||||
if (item == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return (item->type & 0xFF) == cJSON_Raw;
|
||||
}
|
||||
|
12
cJSON.h
12
cJSON.h
@ -109,6 +109,18 @@ extern int cJSON_HasObjectItem(const cJSON *object, const char *string);
|
||||
/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
|
||||
extern const char *cJSON_GetErrorPtr(void);
|
||||
|
||||
/* These functions check the type of an item */
|
||||
extern int cJSON_IsInvalid(const cJSON * const item);
|
||||
extern int cJSON_IsFalse(const cJSON * const item);
|
||||
extern int cJSON_IsTrue(const cJSON * const item);
|
||||
extern int cJSON_IsBool(const cJSON * const item);
|
||||
extern int cJSON_IsNull(const cJSON * const item);
|
||||
extern int cJSON_IsNumber(const cJSON * const item);
|
||||
extern int cJSON_IsString(const cJSON * const item);
|
||||
extern int cJSON_IsArray(const cJSON * const item);
|
||||
extern int cJSON_IsObject(const cJSON * const item);
|
||||
extern int cJSON_IsRaw(const cJSON * const item);
|
||||
|
||||
/* These calls create a cJSON item of the appropriate type. */
|
||||
extern cJSON *cJSON_CreateNull(void);
|
||||
extern cJSON *cJSON_CreateTrue(void);
|
||||
|
Loading…
Reference in New Issue
Block a user