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; }
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; }