2012-01-23 114 views
6

我有一個NSData對象,我需要將它轉換爲NSDictionary對象。將NSData轉換爲JSON

NSData *data = ....; 

現在我需要將其轉換爲一個NSDictionary,我怎麼能做到這一點編程?

注意:在我將NSData保存到NSDictionary之後,我應該能夠訪問key value對的NSDictionary

我沒有一個代碼來說明我的工作方式,到目前爲止,我只創建了NSData對象,並沒有任何線索繼續:)

+3

什麼格式'data'嗎?除非是標準的序列化格式之一,否則您需要一些邏輯來將其轉換爲字典。 –

+0

是你想轉換的JSON數據嗎? –

+0

是的,它是JSON數據。有人可以給我看一個示例代碼或教程,演示轉換 – Illep

回答

3

你也可以繼承MKNetworkOperation並重寫responseJSON方法有以下:

-(id) responseJSON 
{ 
    NSString *rawJSON; 
    id jsonValue = nil; 
    if ((rawJSON = [[NSString alloc] initWithData:[self responseData] encoding:NSUTF8StringEncoding]) != nil) { 
     SBJsonParser *jsonParser = [[SBJsonParser alloc] init]; 
     if ((jsonValue = [jsonParser objectWithString:rawJSON]) == nil) { 
      NSLog(@"This string doesn't seem to be JSON: '%@'\nraw Data : '%s'", rawJSON, (char *)[[self responseData] bytes]); 
      return [self responseString]; 
     } 
    } 
    else { 
     NSLog(@"This data doesn't seem to be an UTF8 encoded string: %@", [self responseData]); 
     return [self responseString]; 
    } 

    return jsonValue; 
} 
3

請檢查堆棧溢出的這個環節,我已經消耗JSON服務,它會幫助你很多。所有的編碼都在那裏。

JSON Data Conversion

這裏是示例項目的教程

JSON Parse Tutorial

希望你會發現它有助於

+0

我正在使用MKNetworkKit。你能幫我嗎 – Illep

+2

我沒有使用過,我喜歡使用iOS本機方法和框架,試試看NSJSONSerialization你會發現它更容易序列化和反序列化 –

1

我強烈建議調用SBJSON framework,它救了我的時間,很多次,準確地完成了我的工作,並輕鬆使用。您不需要知道轉換算法的細節,只需下載並調用它即可。

您可能需要從here下載它,然後按照this tutorial完成您的工作。

+0

那麼,我正在使用MKNetworkKit。我有點失落 – Illep

+0

對不起,我還沒有使用MKNetworkKit。當我需要JSON解析器時,我第一次找到SBJSON感到很幸運。我建議你轉向使用SBJSON,或者你可能想修改你的問題,以便詢問有關MKNetworkKit的特定問題。希望我能幫上忙。 – Skyler