sagarfan
sagarfan

Reputation: 21

modify json file using cJSON library

what i want to do is reading a json format file and modify it then writing the modified content to file.

 55     cJSON *root,*basicpara;
 56     char *out;
 57 
 58     root = dofile("basicparameter.cfg");
 59     out = cJSON_Print(root);
 60     printf("before modify:%s\n",out);
 61     free(out);
 62     basicpara = cJSON_GetObjectItem(root,"basicparameter");
 63     cJSON_GetObjectItem(basicpara,"mode")->valueint = 0;
 64     cJSON_GetObjectItem(basicpara,"TimeoutPoweron")->valueint = 10;
 65 
 66     out = cJSON_Print(root);
 67     printf("after modify:%s\n",out);
 68     free(out);
 69     //write_file("basicparameter.cfg",out);
 70     cJSON_Delete(root);

i am confused why both contents are the same...

before modify:{
    "basicparameter":   {
        "mode": 1,
        "nBefore":  2,
        "nAfter":   2,
        "LuxAutoOn":    50,
        "LuxAutoOff":   16,
        "TimeoutPoweron":   30
    }
}
after modify:{
    "basicparameter":   {
        "mode": 1,
        "nBefore":  2,
        "nAfter":   2,
        "LuxAutoOn":    50,
        "LuxAutoOff":   16,
        "TimeoutPoweron":   30
    }
}

Upvotes: 2

Views: 2427

Answers (1)

FSMaxB
FSMaxB

Reputation: 2490

Please use the cJSON_SetNumberValue macro for setting the number. The problem is, that you are only setting the valueint property but printing relies on the valuedouble property.

Having both valueint and valuedouble in cJSON was a terrible design decision and will probably confuse many people in the future as well.

Upvotes: 1

Related Questions