2016-03-15 1 views
1

что я хочу сделать, это прочитать файл формата json и изменить его, а затем записать измененный контент в файл.изменить json-файл с помощью библиотеки cJSON

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); 

я путаюсь, почему оба содержание одинаковы ...

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 
    } 
} 
+0

Я знаю, что это старый вопрос, но можете ли вы рассказать мне, как вы на самом деле читаете содержимое своих JSON-файлов. Что такое функция dofile, какой файл является basicparameter.cfg? – Ghos3t

ответ

0

Пожалуйста, используйте cJSON_SetNumberValue макрос для установки числа. Проблема в том, что вы устанавливаете только свойство valueint, но печать зависит от свойства valuedouble.

Имея как valueint, так и valuedouble в cJSON было страшным дизайнерским решением и, вероятно, смущает многих людей в будущем.

Смежные вопросы