2013-07-16 117 views
1

我有这样的对象:
转换对象到JSON在iOS的

@interface EmailToSend : NSObject 

@property (copy, nonatomic) NSString *Subject; 
@property (copy, nonatomic) NSString *Body; 
@property (strong, nonatomic) NSArray *Cc; 
@property (strong, nonatomic) NSArray *Bcc; 
@property (strong, nonatomic) NSArray *To; 
@property (strong, nonatomic) EmailAddress *From; 
@property (copy, nonatomic) NSString *Username; 
@property (copy, nonatomic) NSString *Password; 

@end 

Bcc, To, From as Array EmailAdress 

@interface EmailAddress : NSObject 

@property (nonatomic, assign) int Id; 
@property (copy, nonatomic) NSString *address; 
@property (copy, nonatomic) NSString *displayName; 

@end 

我使用iOS中的JSON框架解析对象EmailToSend

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:emailToSend options:NSJSONWritingPrettyPrinted error:&writeError]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

当我运行该项目,会出现一个错误:

Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: 'Invalid type in JSON write 
(EmailToSend) 

如何解决?

+0

它在错误消息中说明了这一切:'JSON写入(EmailToSend)'中的无效类型'。这可能是你自己的课程之一。 – dandan78

+0

@NhuHowHow你已经解决了这个问题,我面临着同样的问题。 –

回答

3

EmailToSend是您在应用程序中使用的类类型。但是,Cocoa中的内置JSON序列化程序只能使用简单的类型,例如NSStringNSArray等。如果您希望它可以工作,则必须使From属性成为一个字符串。

正如Wain在他的评论中指出的,根元素还需要是NSArrayNSDictionary

+0

根元素应该是一个字典或一个数组。 – Wain

+0

感谢您的额外信息。 – dandan78