linux C语言 对本地文件进行读写操作

linux C语言 对本地文件进行最简单读写操作

  • 读取json文件
  • 保存json文件

读取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);				
}

你可能感兴趣的:(cjson,c语言,javascript,json)