static void msg_reg_parse(json_t *jobj, struct message_registry *mr) { json_t *oem_json = NULL; json_t *mjobj = NULL; load_json_str_value(mr->name, MAX_NAME_SIZE, jobj, "Name"); load_json_str_value(mr->modified, MAX_MODIFIED_SIZE, jobj, "Modified"); load_json_str_value(mr->type, MAX_TYPE_SIZE, jobj, "Type"); load_json_str_value(mr->lang, MAX_LANGUAGE_SIZE, jobj, "Language"); load_json_str_value(mr->desc, MAX_DESCRIPTION_SIZE, jobj, "Description"); load_json_str_value(mr->prefix, MAX_PREFIX_SIZE, jobj, "RegistryPrefix"); load_json_str_value(mr->ver, MAX_VERSION_SIZE, jobj, "Version"); load_json_str_value(mr->entity, MAX_ENTITY_SIZE, jobj, "OwningEntity"); mjobj = json_object_get(jobj, "Messages"); if (mjobj == NULL){ printf("fail to get json Message field.\n"); return; } mr->msg_header = msg_parse(mjobj); oem_json = json_object_get(jobj, "Oem");; if (oem_json == NULL) { printf("fail to get json Oem field.\n"); return; } mr->oem_data = oem_parse(oem_json); }
static void msg_reg_parse(json_t *jobj, struct message_registry *mr) { json_t *oem_json = NULL; json_t *mjobj = NULL; load_json_str_value(mr->odata_context, MAX_NAME_SIZE, jobj, "@odata.context"); load_json_str_value(mr->odata_id, MAX_MODIFIED_SIZE, jobj, "@odata.id"); load_json_str_value(mr->odata_type, MAX_TYPE_SIZE, jobj, "@odata.type"); load_json_str_value(mr->lang, MAX_LANGUAGE_SIZE, jobj, "Language"); load_json_str_value(mr->prefix, MAX_PREFIX_SIZE, jobj, "RegistryPrefix"); load_json_str_value(mr->ver, MAX_VERSION_SIZE, jobj, "RegistryVersion"); load_json_str_value(mr->entity, MAX_ENTITY_SIZE, jobj, "OwningEntity"); mjobj = json_object_get(jobj, "Messages"); if (mjobj == NULL){ printf("fail to get json Message field.\n"); return; } mr->msg_header = msg_parse(mjobj); /* oem_json = json_object_get(jobj, "Oem");; if (oem_json == NULL) { printf("fail to get json Oem field.\n"); return; } mr->oem_data = oem_parse(oem_json); */ }
static struct mr_message *msg_parse(json_t *jobj) { struct mr_message *pmsg = NULL; struct mr_message *pmsg_header = NULL; struct json_t *jmsg_body = NULL; struct json_t *tmp = NULL; int32 sn = 1; json_pair_t *pair; json_object_t *obj = json_to_object(jobj); for (pair = obj->next; pair != NULL; pair = pair->next) { if (pmsg == NULL) { pmsg = (struct mr_message *)malloc(sizeof(struct mr_message)); if (pmsg == NULL) continue; memset(pmsg, 0, sizeof(struct mr_message)); pmsg_header = pmsg; } else { pmsg->pnext = (struct mr_message *)malloc(sizeof(struct mr_message)); if (pmsg->pnext == NULL) continue; memset(pmsg->pnext, 0, sizeof(struct mr_message)); pmsg = pmsg->pnext; } strncpy(pmsg->msg_sn_str, pair->name, MAX_IDENTITY_SIZE - 1); pmsg->msg_sn = sn; pmsg->index = get_json_int(pair->value, "_ArgPos"); load_json_str_value(pmsg->desc, MAX_SEVERITY_SIZE, pair->value, "Description"); load_json_str_value(pmsg->msg, MAX_MESSAGE_SIZE, pair->value, "Message"); load_json_str_value(pmsg->severity, MAX_SEVERITY_SIZE, pair->value, "Severity"); pmsg->num_of_args = (int32)json_integer_value(json_object_get(pair->value, "NumberOfArgs")); param_type_parse(json_object_get(pair->value, "ParamTypes"), pmsg->types); /* load_json_str_value(pmsg->resolution, MAX_LSTR_SIZE, pair->value, "Resolution"); pmsg->oem_msg = oem_parse(json_object_get(pair->value, "Oem")); */ sn++; } return pmsg_header; }
static struct oem *oem_parse(json_t *jobj) { struct oem *poem = NULL; struct oem *poem_header = NULL; json_object_t *obj = json_to_object(jobj); json_pair_t *pair; for (pair = obj->next; pair != NULL; pair = pair->next) { if (poem == NULL) { poem = (struct oem *)malloc(sizeof(struct oem)); poem_header = poem; } else { poem->pnext = (struct oem *)malloc(sizeof(struct oem)); poem = poem->pnext; } strncpy_safe(poem->id_str, pair->name, MAX_SEVERITY_SIZE, MAX_SEVERITY_SIZE - 1); load_json_str_value(poem->type, MAX_TYPE_SIZE, pair->value, "Type"); } return poem_header; }