cJSON_Print 不显示更新值
cJSON_Print dosen't show updated values
我正在使用 Dave Gamble 的 cJSON,遇到以下问题。
如果我更改 cJSON 结构中的值,然后使用 cJSON_Print 命令,我不会得到更新的值,而是仍然得到默认值。
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void main(){
cJSON *test = cJSON_Parse("{\"type\": \"rect\", \n\"width\": 1920, \n\"height\": 1080, \n\"interlace\": false,\"frame rate\": 24\n}");
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
cJSON_GetObjectItem(test,"frame rate")->valueint=15;
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
}
这是我用于小测试的代码,它给出了这些结果:
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
cJSONvalueint: 24
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
cJSONvalueint: 15
有谁知道我做错了什么,以及如何使用 cJSON_Print 命令获得正确的值?
我认为正确的调用需要使用 cJSON_SetIntValue 宏。
它在对象上设置 valueint 和 valuedouble 而不仅仅是 valueint。
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void main(){
cJSON *test = cJSON_Parse("{\"type\": \"rect\", \n\"width\": 1920, \n\"height\": 1080, \n\"interlace\": false,\"frame rate\": 24\n}");
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
cJSON_SetIntValue(cJSON_GetObjectItem(test, "frame rate"), 15);
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
}
那会 return:
$ ./test
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
cJSONvalueint: 24
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 15
}
cJSONvalueint: 15
我正在使用 Dave Gamble 的 cJSON,遇到以下问题。 如果我更改 cJSON 结构中的值,然后使用 cJSON_Print 命令,我不会得到更新的值,而是仍然得到默认值。
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void main(){
cJSON *test = cJSON_Parse("{\"type\": \"rect\", \n\"width\": 1920, \n\"height\": 1080, \n\"interlace\": false,\"frame rate\": 24\n}");
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
cJSON_GetObjectItem(test,"frame rate")->valueint=15;
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
}
这是我用于小测试的代码,它给出了这些结果:
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
cJSONvalueint: 24
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
cJSONvalueint: 15
有谁知道我做错了什么,以及如何使用 cJSON_Print 命令获得正确的值?
我认为正确的调用需要使用 cJSON_SetIntValue 宏。
它在对象上设置 valueint 和 valuedouble 而不仅仅是 valueint。
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void main(){
cJSON *test = cJSON_Parse("{\"type\": \"rect\", \n\"width\": 1920, \n\"height\": 1080, \n\"interlace\": false,\"frame rate\": 24\n}");
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
cJSON_SetIntValue(cJSON_GetObjectItem(test, "frame rate"), 15);
printf("cJSONPrint: %s\n cJSONvalueint: %d\n",cJSON_Print(test), cJSON_GetObjectItem(test,"frame rate")->valueint);
}
那会 return:
$ ./test
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
cJSONvalueint: 24
cJSONPrint: {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 15
}
cJSONvalueint: 15