json串:
{
- "list":[
- "hello",
- "world"
}
代码 :
int func(char *sn)
{
int ret = 0;
cJSON *root, *list;
FILE *fp = fopen("a.txt", "r");
if(!fp) {
printf("open sn file failed!\n");
return -1;
}
struct stat st;
if (fstat("a.txt", &st) == -1) {
fclose(fp);
return -1;
}
char *buffer = (char*)malloc(st.st_size);
if(buffer == NULL) {
fclose(fp);
return -1;
}
ret = fread(buffer, 1, st.st_size, fp);
if(ret != st.st_size) {
printf("fread sn file failed!\n");
goto err1;
}
if ((root = cJSON_Parse(buffer)) == NULL) {
printf("parse json fail");
goto err2;
}
char *strbuf = (char*)malloc(st.st_size);
if(strbuf == NULL) {
goto err3;
}
list = cJSON_GetObjectItem(root, "SN");
if (list == NULL) {
goto err4;
}
int arraySize = cJSON_GetArraySize(list);
for ( int i = 0; i < arraySize; i++) {
cJSON *item = cJSON_GetArrayItem(list, i);
if (item != NULL ) {
printf("Item %d: %s\n", i, item->valuestring);
if(strcmp(sn, item->valuestring) ==0) {
ret = -1;
break;
}
}
}
cJSON_Delete(root);
err4:
gent_free(strbuf);
err3:
cJSON_Delete(root)
err2:
fclose(fp);
err1:
agent_free(buffer);
return ret;
}