Преглед на файлове

add new function of setValuestringToObject

Alanscut преди 5 години
родител
ревизия
6b35f1c5bc
променени са 2 файла, в които са добавени 27 реда и са изтрити 0 реда
  1. 25 0
      cJSON.c
  2. 2 0
      cJSON.h

+ 25 - 0
cJSON.c

@@ -368,6 +368,31 @@ CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number)
     return object->valuedouble = number;
 }
 
+CJSON_PUBLIC(char*) cJSON_SetValuestringToObject(cJSON *object, const char *valuestring)
+{
+    size_t length = 0;
+    char *copy = NULL;
+    /* if object->valuestring is NULL, it should not set valuestring */
+    if (object->valuestring == NULL)
+    {
+        return NULL;
+    }
+    length = strlen(valuestring) + sizeof("");
+    copy = (char*) cJSON_malloc(length);
+    if (copy == NULL)
+    {
+        return NULL;
+    }
+    memcpy(copy, valuestring, length);
+    if (!(object->type & cJSON_IsReference) && (object->valuestring != NULL))
+    {
+        cJSON_free(object->valuestring);
+    }
+    object->valuestring = copy;
+
+    return copy;
+}
+
 typedef struct
 {
     unsigned char *buffer;

+ 2 - 0
cJSON.h

@@ -278,6 +278,8 @@ CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * c
 /* helper for the cJSON_SetNumberValue macro */
 CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
 #define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
+/* Only takes effect when type of object is JSON_Object */
+CJSON_PUBLIC(char*) cJSON_SetValuestringToObject(cJSON *object, const char *valuestring);
 
 /* Macro for iterating over an array or object */
 #define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)