- Javve
- Medlem ●
- Umeå
- 2009-08-15 11:40
Hej!
Jag har ganska nyligen börjat med Obj-C och har såklart stött på lite problem
Ska nämligen parsa lite JSON och vet inte riktigt hur jag ska gå tillväga för att få ut någon ur det data jag läst in.
Använder json-framework - Project Hosting on Google Code och det fungerar bra. Men som sagt, jag vet inte riktigt hur jag ska få ut datan ur det jag läst in.
Har hittat en liten guide på adressen JSON Framework for iPhone (Part 2) som är rätt bra. Dock går den bara in en nivå i innehållet och de flesta av Googles APIer så har JSON-svaret flera nivår. Exempelvis koden nedan från deras RSS-läsningsAPI.
{"responseData": { "feed": { "title": "Digg", "link": "http://digg.com/", "author": "", "description": "Digg", "type": "rss20", "entries": [ { "title": "The Pirate Bay Moves Servers to Egypt Due to Copyright Laws", "link": "http://digg.com/tech_news/The_Pirate_Bay_Move...", "author": "", "publishedDate": "Mon, 31 Mar 2008 23:13:33 -0700", "contentSnippet": "Due to the new copyright legislation that are going ...", "content": "Due to the new copyright legislation that are going to take...", "categories": [ ] }, { "title": "Millions Dead/Dying in Recent Mass-Rick-Rolling by YouTube.", "link": "http://digg.com/comedy/Millions_Dead_Dying_in...", "author": "", "publishedDate": "Mon, 31 Mar 2008 22:53:30 -0700", "contentSnippet": "Click on any \u0022Featured Videos\u0022. When will the insanity stop?", "content": "Click on any \u0022Featured Videos\u0022. When will the insanity stop?", "categories": [ ] }, ... ] } } , "responseDetails": null, "responseStatus": 200}
Så min fråga är nu hur jag t.ex. skriver ut de "entries" som finns här och t.ex. skriver ut titeln för varje.
(längst ned i guiden castar dom innehållet till NSDictionary och skriver ut lite data, men dock bara i "en nivå" så i detta fall hade jag kunnat hämta responsData)
- (NSDictionary *) downloadPublicJaikuFeed { id response = [self objectWithUrl:[NSURL URLWithString:@"http://jaiku.com/feed/json"]]; NSDictionary *feed = (NSDictionary *)response; return feed; }
NSDictionary *feed = [self downloadPublicJaikuFeed]; // get the array of "stream" from the feed and cast to NSArray NSArray *streams = (NSArray *)[feed valueForKey:@stream]; // loop over all the stream objects and print their titles int ndx; NSDictionary *stream; for (ndx = 0; ndx < stream.count; ndx++) { NSDictionary *stream = (NSDictionary *)[streams objectAtIndex:ndx]; NSLog(@"This is the title of a stream: %@", [stream valueForKey:@title]); }
Skulle verkligen uppskatta lite exempelkod (eftersom jag som sagt är nybörjare).
Tack på förhand