尝试使用 JSONModel 序列化后出错:JSON 写入中的类型无效 (...)
Posted
技术标签:
【中文标题】尝试使用 JSONModel 序列化后出错:JSON 写入中的类型无效 (...)【英文标题】:Error after trying to serialize with JSONModel: Invalid type in JSON write (...) 【发布时间】:2013-10-30 15:10:15 【问题描述】:我正在尝试使用 Framework JSOSNModel 序列化我的对象。但我收到以下错误:
[JSONModel.m:915] 异常:JSON 写入中的类型无效 (DienstleistungModel)
这是我的源代码:
buchung.m
-(NSMutableArray *) FetchDienstleistungenImWarenkorb
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSManagedObjectContext *context = [app managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Warenkorb" inManagedObjectContext:context];
[request setEntity:entity];
NSSortDescriptor *sort1 = [[NSSortDescriptor alloc] initWithKey:@"vondatum" ascending:YES];
NSArray *sortArray = [NSArray arrayWithObjects:sort1, nil];
[request setSortDescriptors:sortArray];
NSError *error;
NSArray *fetchedObjects = [[app managedObjectContext]executeFetchRequest:request error:&error];
if (fetchedObjects == nil)
NSLog(@"Houston, we have a problem: %@", error);
DienstleistungModel *dm = [[DienstleistungModel alloc]init];
NSMutableArray *produkt = [[NSMutableArray alloc]init];
for (NSArray *event in fetchedObjects)
dm.dienstleistungid = [event valueForKey:@"produktid"];
dm.vondatum = [event valueForKey:@"vondatum"];
dm.bisdatum = [event valueForKey:@"bisdatum"];
dm.menge = [event valueForKey:@"menge"];
[produkt addObject:dm];
return product; // Here iam getting a list of products, saved in a mutable array
(IBAction)nextPressed:(id)sender
Booking *aktuellebuchung = [[Booking alloc]init];
aktuellebuchung.bestuhlungsid = @"3";
aktuellebuchung.vondatum = self.vonDatumLabel.text;
aktuellebuchung.bisdatum = self.bisDatumLabel.text;
aktuellebuchung.thema = self.themaTextView.text;
aktuellebuchung.personenanzahl = self.anzahlPersonenLabel.text;
aktuellebuchung.veranstalter = self.veranstalterLabel.text;
aktuellebuchung.dienstetest = [self FetchDienstleistungenImWarenkorb];
NSString *test = [aktuellebuchung toJSONString]; // Here is the error
booking.h
@interface Booking : JSONModel
@property (nonatomic, retain) NSString * bestuhlungsid;
@property (nonatomic, retain) NSString * bisdatum;
@property (nonatomic, retain) NSString * vondatum;
@property (nonatomic, retain) NSString * personenanzahl;
@property (nonatomic, retain) NSString * thema;
@property (nonatomic, retain) NSString * veranstalter;
@property (nonatomic, retain) NSMutableArray * dienstetest;
@end
DienstleistungModul.h
@protocol DienstleistungModel @end
@interface DienstleistungModel : JSONModel
@property (nonatomic, retain) NSNumber * dienstleistungid;
@property (nonatomic, retain) NSString * bisdatum;
@property (nonatomic, retain) NSString * vondatum;
@property (nonatomic, retain) NSNumber * menge;
@end
您可以在屏幕截图中看到对象在那里,但我无法对其进行序列化。请帮忙。
【问题讨论】:
你有关于数组属性的 DienstleistungModel 协议吗?当您将代码粘贴到问题中时,bcz 可能会丢失小于和大于符号 只是一个随机的想法 - 尝试将 dienstetest 声明为 NSArray 看看是否会失败 【参考方案1】:我也遇到了同样的问题,问题如下:
@property (nonatomic, retain) NSMutableArray * dienstetest;
这必须更改以指定您在 Array 中拥有的对象的类型,这样这样的东西才能使其工作(假设它是好的对象,因为我的德语不是那么好)-您已经有了协议,所以您应该可以用这个来指定类型:
@property (nonatomic, retain) NSArray<DienstleistungModel> * dienstetest;
【讨论】:
以上是关于尝试使用 JSONModel 序列化后出错:JSON 写入中的类型无效 (...)的主要内容,如果未能解决你的问题,请参考以下文章