int kr_param_persist_file_load(T_KRParam *ptParam, char *psParamVersion, char *psParamClassName, void *ptResource)
{
    int nRet = 0;
    cJSON *root = (cJSON *)ptResource;
    
    cJSON *children = cJSON_GetObjectItem(root, psParamClassName);
    if (children == NULL) {
        KR_LOG(KR_LOGDEBUG, "no param class %s found!", psParamClassName);
        return nRet;
    }
    for (int i=0; i<cJSON_GetArraySize(children); ++i) {
        cJSON *child = cJSON_GetArrayItem(children, i);
        
        char *psParamObjectKey = cJSON_GetString(child, "param_object_key");
        char *psParamObjectString = cJSON_GetString(child, "param_object_string");
        
        nRet = kr_param_object_add(ptParam, psParamClassName, 
                psParamObjectKey, psParamObjectString);
        if (nRet != 0) {
            KR_LOG(KR_LOGERROR, "kr_param_object_add %s failed!", psParamObjectKey);
            return -1;
        }
    }

    return nRet;
}
示例#2
0
文件: render.c 项目: sinory/cvelocity
cJSON *text_render(struct simpleNode *n){
    /**
     这个地方要设置的原因是:他在block_render中会被渲染一次,然后在总递归中又会再次被渲染
     */
    //set_already_rendered(n);
    printf("%s",cJSON_GetString(n->info.image));
    return n->info.image;
}
void *kr_param_persist_file_load_pre(T_KRParamPersistConfig *ptConfig)
{
    char *psFileName = ptConfig->value.file;
    FILE *fp=fopen(psFileName,"rb");
    if (fp == NULL) {
        KR_LOG(KR_LOGERROR, "fopen %s failed!", psFileName);
        return NULL;
    }
    fseek(fp, 0, SEEK_END); long len=ftell(fp); fseek(fp, 0, SEEK_SET);
	char *data=(char*)kr_malloc(len+1); int n=fread(data,1,len,fp); fclose(fp);
	cJSON *root=cJSON_Parse(data); kr_free(data);
	if (root == NULL) {
	    KR_LOG(KR_LOGERROR, "json parse %s failed! %s", data, cJSON_GetErrorPtr());
        return NULL;
	}
	char *version = cJSON_GetString(root, "version");
	if (strcmp(ptConfig->version, version) != 0) {
	    KR_LOG(KR_LOGERROR, "version mismatch expected:%s actual:%s", 
	        ptConfig->version, version);
        return NULL;
	}
    return root;
}