mirror of
https://github.com/DaveGamble/cJSON.git
synced 2023-08-10 21:13:26 +03:00
add support to insert raw json
This commit is contained in:
parent
0d10e279c8
commit
06008b0444
27
cJSON.c
27
cJSON.c
@ -960,6 +960,13 @@ static char *print_value(const cJSON *item, int depth, int fmt, printbuffer *p)
|
||||
case cJSON_Number:
|
||||
out = print_number(item, p);
|
||||
break;
|
||||
case cJSON_Raw:
|
||||
out = ensure(p, strlen(item->valuestring));
|
||||
if (out)
|
||||
{
|
||||
strcpy(out, item->valuestring);
|
||||
}
|
||||
break;
|
||||
case cJSON_String:
|
||||
out = print_string(item, p);
|
||||
break;
|
||||
@ -987,6 +994,9 @@ static char *print_value(const cJSON *item, int depth, int fmt, printbuffer *p)
|
||||
case cJSON_Number:
|
||||
out = print_number(item, 0);
|
||||
break;
|
||||
case cJSON_Raw:
|
||||
out = cJSON_strdup(item->valuestring);
|
||||
break;
|
||||
case cJSON_String:
|
||||
out = print_string(item, 0);
|
||||
break;
|
||||
@ -1947,6 +1957,23 @@ cJSON *cJSON_CreateString(const char *string)
|
||||
return item;
|
||||
}
|
||||
|
||||
extern cJSON *cJSON_CreateRaw(const char *raw)
|
||||
{
|
||||
cJSON *item = cJSON_New_Item();
|
||||
if(item)
|
||||
{
|
||||
item->type = cJSON_Raw;
|
||||
item->valuestring = cJSON_strdup(raw);
|
||||
if(!item->valuestring)
|
||||
{
|
||||
cJSON_Delete(item);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
cJSON *cJSON_CreateArray(void)
|
||||
{
|
||||
cJSON *item = cJSON_New_Item();
|
||||
|
6
cJSON.h
6
cJSON.h
@ -36,6 +36,7 @@ extern "C"
|
||||
#define cJSON_String (1 << 4)
|
||||
#define cJSON_Array (1 << 5)
|
||||
#define cJSON_Object (1 << 6)
|
||||
#define cJSON_Raw (1 << 7) //< raw json
|
||||
|
||||
#define cJSON_IsReference 256
|
||||
#define cJSON_StringIsConst 512
|
||||
@ -52,7 +53,7 @@ typedef struct cJSON
|
||||
/* The type of the item, as above. */
|
||||
int type;
|
||||
|
||||
/* The item's string, if type==cJSON_String */
|
||||
/* The item's string, if type==cJSON_String and type == cJSON_Raw */
|
||||
char *valuestring;
|
||||
/* The item's number, if type==cJSON_Number */
|
||||
int valueint;
|
||||
@ -101,6 +102,8 @@ extern cJSON *cJSON_CreateFalse(void);
|
||||
extern cJSON *cJSON_CreateBool(int b);
|
||||
extern cJSON *cJSON_CreateNumber(double num);
|
||||
extern cJSON *cJSON_CreateString(const char *string);
|
||||
// raw json
|
||||
extern cJSON *cJSON_CreateRaw(const char *raw);
|
||||
extern cJSON *cJSON_CreateArray(void);
|
||||
extern cJSON *cJSON_CreateObject(void);
|
||||
|
||||
@ -148,6 +151,7 @@ extern void cJSON_Minify(char *json);
|
||||
#define cJSON_AddBoolToObject(object,name,b) cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))
|
||||
#define cJSON_AddNumberToObject(object,name,n) cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
|
||||
#define cJSON_AddStringToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateString(s))
|
||||
#define cJSON_AddRawToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateRaw(s))
|
||||
|
||||
/* When assigning an integer value, it needs to be propagated to valuedouble too. */
|
||||
#define cJSON_SetIntValue(object,val) ((object) ? (object)->valueint = (object)->valuedouble = (val) : (val))
|
||||
|
Loading…
Reference in New Issue
Block a user