filter data from wikimedia api ios

2019-08-27 20:37发布

问题:

I got the fllowing json response from wikipedia api while searching Anil_Ambani. I used this api. I got the following response

<i>$2 = 0x071882f0 {{BLP sources|date=June 2012}}
{{Infobox person
| name             = Anil Ambani 
| image            =AnilAmbani.jpg
| image_size       = 
| caption          = Ambani in 2009
| birth_date       = {{Birth date and age|1959|6|4|df=y}}
| birth_place      = [[Mumbai]], [[Maharashtra]], [[India]]
| nationality      = Indian
| occupation       = Chairman of [[Anil Dhirubhai Ambani Group]] 
| networth         = {{loss}} [[United States dollar|$]]5.2 billion (2012)<ref         name="forbes.com">[http://www.forbes.com/profile/anil-ambani/.] Forbes.com. Retrieved April 2013.</ref> 
| residence        = Mumbai, Maharashtra, India
| alma_mater       = [[Warwick Business School]]<br />[[Wharton School of the University of Pennsylvania|The Wharton School]]
| parents          = [[Dhirubhai Ambani]]<br>Kokilaben Ambani
| brother          = [[Mukesh Ambani]]
| spouse           = [[Tina Ambani]]
| children         = 2<ref>{{cite web|url=http://www.indiatoday.com/itoday/20050221/power9.html |title=India Today 2005 Power List |publisher=Indiatoday.com |date=2005-02-21 |accessdate=2010-12-31}}</ref>
|religion         = [[Hinduism]]  
|relations        = [[Mukesh Ambani]] (Brother)
|website          = {{URL|http://www.relianceadagroup.com/ada/chairman.html|Anil Ambani}} 
|footnotes        = 
}}

Can anyone guide me how to filter the data. As it is a NSString. I am not able to convert it to dictionary. How to get the values for name, birthdate, birthplace, etc.

回答1:

First Approach:-
First remove White spaces and irrelevant characters from the string.
Then, proceed in this way:-

NSArray *testArray = [yourString componentsSeparatedByString:@"|"];
NSString *key = [testArray objectAtIndex:0];
NSArray *values = [testArray subarrayWithRange:NSMakeRange(1, [testArray count] - 1)];
NSDictionary *dict = [NSDictionary dictionaryWithObject:values forKey:key];


And you can easily get the value of particular key like name, birthplace, etc.

Second approach:-

NSError *err = nil;
NSArray *arr = [NSJSONSerialization JSONObjectWithData:[yourString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&err];


NSMutableDictionary *dict = arr[0];
    for (NSMutableDictionary *dictionary in arr) {
        // do something using dictionary
    }