以前在cocos2d-x項目中用到json解析,整合了libjson庫後發現網上提供的解析方法大多是在解析過程中取得值,並沒有將解析結果有效儲存起來,於是摸索一番,把解析結果根據資料格式存到數組或字典當中。
不敢獨享,代碼奉上:
JsonUtil:: parseArrJSON(JSONNODE *n,CCObject ** (n == isAry= JSONNODE_ITERATOR it = *key=json_name(* (strcmp(key, )== *obj== *obj== (it != (*it == (json_type(*it)==*char_str=CCString::ccs(*)*obj)-> key=json_name(*!*)*obj)-> (json_type(*it) == JSON_ARRAY || json_type(*it) ==*tempobj=*it,&*)*obj)-> key=json_name(*!*)*obj)-> (json_type(*it)==*value = json_as_string(**char_str=*)*obj)-> key=json_name(*!*)*obj)-> (json_type(*it)== json_number value = json_as_float(**char_str=CCString::createWithFormat(*)*obj)-> key=json_name(*!*)*obj)->++* JsonUtil:: jsonValue( **an =*obj=&View Code
建立個類JsonUtil,包含兩個靜態方法,使用的時候調用JsonUtil::jsonValue(const char *_char),解析的結果會儲存在字典或者數組中,例子:
*betem=CCArray *ary= (CCArray *) JsonUtil::jsonValue(betem);
ccout(ary);
這裡的ccout是自訂的用來列印數組和字典的方法。cocos2d-x的CCLog跟NSLog相比起來真是差遠了,哪怕把時間列印出來也好啊。
附上ccout代碼,可以用來列印儲存在CCArray或CCDictionary中的json資料,勉強做成類似NSLog輸出的樣子:
ccout(CCObject *thob, donotset=, dot= AppDelegate::ccout(CCObject *thob, donotset, (dynamic_cast<CCDictionary *><<*temp=(CCDictionary ** *key=ele->*ob=ele-><< ( i=; i<donotset+; i++)cout<<<<key<<->ccout(ob,donotset+<<<< ( i=; i<donotset; i++)cout<<<<<< (dynamic_cast<CCArray *><<*temp=(CCArray ** (dynamic_cast<CCDictionary *> (ob!=temp->->ccout(ob,donotset+,->ccout(ob,donotset+ (dynamic_cast<CCArray *>->ccout(ob,donotset+ (dynamic_cast<CCString *><<((CCString*)ob)-> (ob!=temp-><<<<<<View Code
輸出結果:
======