读取json文件
对本地以cjson格式保存的文本进行读取
/* 读取json文件 */
const char* ReadJson(const char* filename)
{
//打开JSON数据文件
int fd = open(filename,O_RDWR) ;
if(fd < 0)
{
log_e("open json_file erroe");
close(fd);
return NULL ;
}
//读取文件中的数据
char buf[MAX_TASKLIST_SIZE]={0};
int ret = read(fd, buf, sizeof(buf));
if(ret == CT_EERROR){
log_e("read json_file error") ;
close(fd);
return NULL ;
}
//关闭文件
close(fd);
return buf;`在这里插入代码片`
}
//获取本地文本的json内容
taskIdList *ReadTaskIdList(char * fileName)
{
printf("----ReadTaskIdList");
taskIdList * tasklist = NULL;
const char* data = ReadJson(fileName);
if(data == NULL){
log_e("ReadJson error") ;
return NULL;
}
cJSON* root = cJSON_Parse(data);
if(root == NULL){
log_e("parse error") ;
return NULL ;
}
#if 1
//读取json内容
//根目录
cJSON *tasks_item = cJSON_GetObjectItem(root,"tasks");//获得tasks元素
if (tasks_item == NULL){
log_e(" read tasks error") ;
goto __ERROR_RETURN ;
}
#endif
__ERROR_RETURN :
cJSON_Delete(root) ;
return tasklist;
}
保存json文件
将json数据保存到文本
/* 保存 普通字符串 到文本文件 */
void SaveText(const char* text, const char* name)
{
if(name == NULL){
log_e("save failed") ;
return ;
}
FILE* fp = fopen(name, "w");
if (NULL != fp){
fwrite(text, strlen(text), 1, fp);
fclose(fp);
log_e("save tasklist.json ok!");
}
else log_e("save tasklist.json error!");
}
/* 将文本处理成json格式后保存 */
// void SaveTextToJSON(const char *text, const char* name)
void SaveTextToJSON(cJSON* json, const char* name)
{
if (json == NULL) {
log_e("json is NULL");
return NULL;
}
char* buff = cJSON_Print(json);
SaveText(buff, name);
cJSON_Delete(json);
free(buff);
}