JSON

json-cÓëÊ÷(2)

×ÖºÅ+ ×÷ÕߣºH5Ö®¼Ò À´Ô´£ºH5Ö®¼Ò 2015-10-14 13:19 ÎÒÒªÆÀÂÛ( )

ÔÚjson-c¿âÖеĺêÊÇÕâÑùµÄ£º # define json_object_object_foreach(obj,key,val) \ char *key; struct json_object * val; \ for ( struct lh_entry *entry = json_object_get_object(obj)-head; ({ if (entry) { k

ÔÚjson-c¿âÖеĺêÊÇÕâÑùµÄ£º

# define json_object_object_foreach(obj,key,val) \ char *key; struct json_object *val; \ for(struct lh_entry *entry = json_object_get_object(obj)->head; ({ if(entry) { key = (char*)entry->k; val = (struct json_object*)entry->v; } ; entry; }); entry = entry->next )

½«json´®ÖеÄÐÅÏ¢±£´æµ½Ê÷ÖвÅÊÇ¿ªÊ¼£¬ÐèÒªÖªµÀÔõôÓòÅÊÇÕýµÀ£¬ËùÒÔ˳±ãд¸öÊ÷µÄ±éÀú£¬ÒÔ¼°ÕÒµ½ËùÓмüÖµ¶ÔµÄȫ·¾¶£¬Ç°ÕßÓõݹé»òÕßÕ»À´½â¾ö£¬ºóÕßÓøöÄܹ»¿´µ½Õ»ÖÐÔªËØµÄÕ»£¬ËùÒÔÓÃvectorÀ´Ã°³äһϾͺÃ:

void pre_order(tree_node* cur_root) { if(cur_root) { if(cur_root->node_data->data_type_ == STRDATA) { std::string info = (static_cast<string_type*>(cur_root->node_data))->get_data(); std::cout<<info<<" "; } else if(cur_root->node_data->data_type_ == INTDATA) { int info = (static_cast<int_type*>(cur_root->node_data))->get_data(); std::cout<<info<<" "; } else if(cur_root->node_data->data_type_ == DOUBLEDATA) { double info = (static_cast<int_type*>(cur_root->node_data))->get_data(); } pre_order(cur_root->first_child); pre_order(cur_root->next_sib); } } void pre_order_stack(tree_node* cur_root) { tree_node* temp = cur_root; std::stack<tree_node*> s; while(temp || !s.empty()) { while(temp) { if(temp->node_data->data_type_ == STRDATA) { std::string info = (static_cast<string_type*>(temp->node_data))->get_data(); std::cout<<info<<" "; } else if(temp->node_data->data_type_ == INTDATA) { int info = (static_cast<int_type*>(temp->node_data))->get_data(); std::cout<<info<<" "; } else if(temp->node_data->data_type_ == DOUBLEDATA) { double info = (static_cast<int_type*>(temp->node_data))->get_data(); std::cout<<info<<" "; } s.push(temp); temp = temp->first_child; } temp = s.top(); s.pop(); temp = temp->next_sib; } } pre_order_pwd(tree_node* cur_root) { tree_node* temp = cur_root; std::vector<tree_node*> v; while(temp || !v.empty()) { while(temp) { v.push_back(temp); temp = temp->first_child; } (v.at(v.size()-1)->first_child == NULL) { std::vector<tree_node*>::iterator it; for(it=v.begin(); it!=v.end(); it++) { if((*it)->node_data->data_type_ == STRDATA) { std::string info = (static_cast<string_type*>((*it)->node_data))->get_data(); std::cout<<info<<" "; } else if((*it)->node_data->data_type_ == INTDATA) { int info = (static_cast<int_type*>((*it)->node_data))->get_data(); std::cout<<info<<" "; } else if((*it)->node_data->data_type_ == DOUBLEDATA) { double info = (static_cast<int_type*>((*it)->node_data))->get_data(); std::cout<<info<<" "; } } std::cout<<std::endl; } temp = v.at(v.size()-1); v.pop_back(); temp = temp->next_sib; } }

¡¡

1.±¾Õ¾×ñÑ­ÐÐÒµ¹æ·¶£¬ÈκÎ×ªÔØµÄ¸å¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ­´´ÎÄÕ£¬Çë×ªÔØÊ±Îñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ­´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄܻᾭÎÒÃDZ༭Ð޸Ļò²¹³ä¡£

Ïà¹ØÎÄÕÂ
ÍøÓѵãÆÀ
Ê