我試圖解析NSArray
到JSON
,但我得到了以下錯誤:SBJsonParser無法解析的NSArray
* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM JSONRepresentation]: unrecognized selector sent to instance 0xa93e460' * First throw call stack: (0x21f1012 0x1feae7e 0x227c4bd 0x21e0bbc 0x21e094e 0x3445a 0x33ecc 0x26a453f 0x26b6014 0x26a72e8 0x26a7450 0x95e22e12 0x95e0acca) libc++abi.dylib: terminate called throwing an exception
我已經包括了從SBJson_3.1.1 /類目錄中的所有類。
這是代碼:
NSMutableArray* arr = ...get array
NSString* jsonArr = [arr JSONRepresentation]; // here I get error
當我做這個簡單的字符串數組它的工作原理:
NSData *jsonData = [NSJSONSerialization arr
options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
但是我的數組包含對象(人)的名單可能有問題。
我使用的項目,而不是人,就像例如
Item.h
@interface Item : NSObject
{
BOOL IsOpen;
NSString* Description;
}
@property int ItemId;
@property int SequenceId;
@property BOOL IsOpen;
@property NSString* Description;
- (id) proxyForJson;
@end
Item.m
@implementation Item
@synthesize ItemId;
@synthesize SequenceId;
@synthesize Description;
@synthesize IsOpen;
- (id) proxyForJson {
return [NSDictionary dictionaryWithObjectsAndKeys:
[NSString stringWithFormat:@"%i", ItemId], @"ItemId",
SequenceId, @"SequenceId",
Description, @"Description",
IsScanned, @"IsOpen",
nil ];
}
@end
UPDATE
學生例如
我試着做一個單獨的項目。我從sbjson框架的classes目錄複製到新項目。這是代碼:
#import "SBJson.h"
@interface Student : NSObject
{
NSString *name;
NSInteger sid;
NSString *email;
}
@property NSString *name;
@property NSInteger sid;
@property NSString *email;
- (id) proxyForJson;
@end
@implementation Student
@synthesize name;
@synthesize sid;
@synthesize email;
- (id) proxyForJson{
return [NSDictionary dictionaryWithObjectsAndKeys:
name, @"student_name",
[NSNumber numberWithInt:sid], @"student_id",
email, @"email",
nil ];
}
@end
NSMutableArray* studentArray = [[NSMutableArray alloc]init];
Student* s1 = [[Student alloc]init];
s1.name = @"student 1";
s1.sid = 45;
s1.email = @"[email protected]";
Student* s2 = [[Student alloc]init];
s2.name = @"student 2";
s2.sid = 46;
s2.email = @"[email protected]";
[studentArray addObject:s1];
[studentArray addObject:s2];
NSString *jsonString = [studentArray JSONRepresentation];
NSLog(@"%@", jsonString);
我再次得到錯誤:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM JSONRepresentation]: unrecognized selector sent to instance 0x741b100'
請看到幾個類似的問題:http://stackoverflow.com/questions/9420126/sbjson-parsing-nsstring-to-nsdictionary&http://stackoverflow.com/問題/ 11937587/IOS-的Objective-C-JSON字符串到NSDictionary中的異常與此評論:http://stackoverflow.com/a/5214540/5950 –
我昨晚谷歌,但沒有什麼幫助包括棧的問題;(我剛剛更新了我的問題有關問題的詳細信息。 – 1110
你錯過定義'JSONRepresentation'。 –