2013-05-01 96 views
-1

我有一個字符串,它是從json格式的web服務器獲得的,但字符串對於其中的所有內容都很大。我嘗試使用NSDICTIONARY,但沒有成功。我想知道什麼是最好的方法來打破這個字符串,並添加到不同的字符串,並最終把它們放在一個字符串類。謝謝您的幫助!這裏是我的代碼:來自Json的Break字符串

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init]; 
[request setURL:[NSURL URLWithString:@"http://mym2webdesign.com/meiplay/paulsuckedabuffalo/artists.php"]]; 

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //Or async request 
returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 

NSError *error=nil; 

NSLog(@"HHHHHHHHHHHHHH"); //use this to know how far Im getting 
NSLog(returnString); // Look at the console and you can see what the restults are 

/*NSDictionary *results = [returnString JSONValue]; 
NSString *ID = [results objectForKey:@"ID"]; // for example 
NSLog(@"ID Number: %@", ID);*/ 

下面是一些日誌我得到的:

[{"ID":"1","name":"kevin","bio":"kevins bio"},{"ID":"1","name":"kevin","age":"20"},{"ID":"2","name":"Cesar","bio":"Cesar bio"},{"ID":"2","name":"Cesar","age":"19"},{"ID":"3", "name":"Katherine", "bio":"Katherines bio"},{"ID":"3", "name":"Katherine", "age":"22"}] 
+3

最外層是一個數組。這可以通過封閉的[]'字符容易地看到。 JSON的語法非常簡單,您需要了解它 - 請參閱http://www.json.org/ - 它將花費所有10分鐘的時間來學習,然後您不必乞求其他人爲你寫代碼。 – 2013-05-01 03:25:06

+0

謝謝,這將幫助很多! – paul590 2013-05-02 00:38:51

回答

8

你做錯了。它的NSArrayNSDictionaries。所以首先你需要將它分配到NSArray然後循環它以得到每個人NSDictionary。見下文。

NSArray *results = [returnString JSONValue]; 
for(NSDictionary *record in results) 
{ 
    NSLog(@"ID: %@", [record objectForKey:@"ID"]); 
} 
+1

+1或者,顯然,如果使用'NSJSONSerialization',它會是:'NSArray * results = [NSJSONSerialization JSONObjectWithData:returnData options:0 error:&error];',完全繞過'NSString'。 – Rob 2013-05-01 02:43:37

+0

解決了這個問題,我知道這很簡單,謝謝你的幫助! – paul590 2013-05-02 00:39:21

1

你可能會更好只使用NSJSONSerialization如果您的應用程序達到或超過5.0的iOS針對:

NSArray *JSONArray = [NSJSONSerialization JSONObjectWithData:returnData options:0 error:&error]; 

您可能需要使用NSArray的NSDictionary的對比試驗,等等,但這應該是一個整體更簡單的解決方案。

+0

我試試這個方法,並玩它來了解更多關於它 – paul590 2013-05-02 00:39:56

1

嘗試這種情況:

NSArray *results = [returnString JSONValue]; 
    for (int i=0; i<[results count];i++) { 
     NSDictionary *DetailDictonary=[results objectAtIndex:i]; 
     NSString *strid=[DetailDictonary objectForKey:@"ID"]; 
     NSString *strName=[DetailDictonary objectForKey:@"name"]; 
     NSString *strBio=[DetailDictonary objectForKey:@"bio"]; 

     // Or You can set it in Your ClassFile 

     MyClass *classObj=[[MyClass alloc] init]; 
     classObj.strid=[DetailDictonary objectForKey:@"ID"]; 
     classObj.strName=[DetailDictonary objectForKey:@"name"]; 
     classObj.strBio=[DetailDictonary objectForKey:@"bio"]; 

     [YourMainArray addObject:classObj]; //set YourClass to Array 
     [classObj release]; 
    } 
+0

這將會是病態的做法,謝謝你給我一個例子! – paul590 2013-05-02 00:40:23