2014-04-10 41 views
-1

有沒有使用JSONModel庫而不繼承JSONModel類的方法。Objective-C使用JSONModel將JSON反序列化爲對象

我想將JSON反序列化爲Objective C類而無需繼承JSONModel形式。

是否有另一個庫將JSON反序列化爲沒有繼承的對象?

+0

是否有可能你想要使用擴展自NSManagedObject的類的JSONModel? – javierfdezg

+0

問了第1000次 –

+0

Daij-Djan你有答案嗎? – moran

回答

0

爲什麼你不想從JSONModel繼承?

的事情是,當你從JSONModel繼承你繼承庫的所有工具。它的目的就是這樣使用,因爲庫公開的方法不是靜態的,所以你需要從JSONModel派生實例。

+0

我不想繼承,因爲我的類只會附加到Json,也許有一天我想反序列化xml到我的類對象 – moran

2

您不必在iOS中使用JSON序列化庫。從iOS 5.0起,有一個類NSJSONSerialization可用於執行此操作。 https://developer.apple.com/library/ios/documentation/foundation/reference/nsjsonserialization_class/Reference/Reference.html

考慮轉換的聯繫人列表,以JSON字符串

+(NSString*) jsonStringRepresentationOfSelectedReceiptients:(NSArray*) contactsList { 
     NSMutableArray* contactsArray = [[NSMutableArray alloc]init]; 
     for (ContactObject *contactObj in contactsList) { 
      NSDictionary* ltPair = @{@"phone_no": [NSNumber numberWithLongLong:contactObj.phoneNo, @"email_id": contactObj.emailId, @"display_name": contactObj.displayName]}; 
      [contactsArray addObject:ltPair]; 
     } 
     NSData *jsonData=[NSJSONSerialization dataWithJSONObject:contactsArray options:NSJSONWritingPrettyPrinted error:nil]; 
     NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
     NSLog(@"json string: %@", recptJson); 
     return jsonString; 
} 

希望這有助於該代碼。因爲標籤與iOS相關,所以我給了ios特定的答案。

+0

我的錯誤,我想從json反序列化爲對象。我的對象包含許多屬性(其中一些是其他對象)。有沒有類可用於此? – moran

+0

檢查我有關使用NSJsonSerialization類將json字符串解序列化爲NSDictionary/NSArray的另一個答案。 –

1

從iOS5開始,你可以使用NSJSONSerialization類來進行序列化和反序列化。對於反序列化,你首先需要將你的json字符串轉換爲NSData對象,調用類方法JSONObjectWithData

NSData *jsonData = [myJsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error; 
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:nil error:&error]; 

使用isKindOfClass你可以找到,如果這是一個字典或數組,因爲JSONObjectWithData將返回一個NSDictionary或NSArray的,這取決於是否您的JSON字符串表示的字典或數組。

+0

你如何將NSDictionary字典轉換爲我的對象? – moran

+0

你可以使用像myobj.email = [dict objectForKey:@「email」];爲所有的屬性做這個。 mydict中的關鍵是來自json。 (U sud使用ur對象的動態屬性) –