Friday, 15 July 2011

objective c - YELP 1.0 JSON access with NSDictionary -



objective c - YELP 1.0 JSON access with NSDictionary -

i doing pretty parsing yelp1 json nsjsonserialization , accessing info nsdictionary. however, figured inconsistencies in response:

some keys surrounded " , ones containing _

parts response:

( { address1 = "xxx"; address2 = ""; address3 = ""; "avg_rating" = 5; city = "chicago"; country = usa; "country_code" = us;

obtained from [[nsstring alloc] initwithdata:self.recieveddata encoding:nsutf8stringencoding];

that's inconsistent documentation no keys in brackets. http://www.yelp.com/developers/documentation/search_api

aperently, brackets indicate '_' in key value reason, not type of value. brackets surround each key containing _ , may value string or int or whatever.

accessing fields such avg_rating with

[dict objectforkey:@"avg_rating"];

fails nsinvalidargumentexception

while [dict objectforkey:@"country"]; work.

hence, dont believe it's nsdictionary / nslog problem value returned, problem key submitted dict object. or, maybe during json parsing? please, prove me wrong piece of working code... :)

any ideas? thanks, el

edit: edited because question might have been clear enough. edit2: in fact, nsnumber returned here. got confused these "" .

parts response:

no. that's not part of response. that's description of resulting nsdictionary not json.

nslog([dict objectforkey:@"avg_rating"]); fails nsinvalidargumentexception, while nslog([dict objectforkey:@"country"]); work.

sure, because nslog() ain't no magic. expects (format) string first argument, if object feed nsstring, work fine (country string, assume), if don't (avg_rating may nsnumber), won't (it seek send messages of nsstring nsnumber instance, fails).

so understand difference between json , description of nsdictionary generated json.

objective-c ios6 nsjsonserialization yelp

No comments:

Post a Comment