Merge pull request #113 from iwat/experimental-fix-jsonencode

Fix AFJSONEncode to work properly
This commit is contained in:
Mattt Thompson 2011-11-14 11:33:53 -08:00
commit 6b48178105

View file

@ -32,9 +32,9 @@ static NSData * AFJSONEncode(id object, NSError **error) {
id _NSJSONSerializationClass = NSClassFromString(@"NSJSONSerialization"); id _NSJSONSerializationClass = NSClassFromString(@"NSJSONSerialization");
SEL _NSJSONSerializationSelector = NSSelectorFromString(@"dataWithJSONObject:options:error:"); SEL _NSJSONSerializationSelector = NSSelectorFromString(@"dataWithJSONObject:options:error:");
if (_JSONKitSelector && [data respondsToSelector:_JSONKitSelector]) { if (_JSONKitSelector && [object respondsToSelector:_JSONKitSelector]) {
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[data methodSignatureForSelector:_JSONKitSelector]]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[object methodSignatureForSelector:_JSONKitSelector]];
invocation.target = data; invocation.target = object;
invocation.selector = _JSONKitSelector; invocation.selector = _JSONKitSelector;
NSUInteger serializeOptionFlags = 0; NSUInteger serializeOptionFlags = 0;
@ -43,21 +43,21 @@ static NSData * AFJSONEncode(id object, NSError **error) {
[invocation invoke]; [invocation invoke];
[invocation getReturnValue:&data]; [invocation getReturnValue:&data];
} else if (_SBJSONSelector && [data respondsToSelector:_SBJSONSelector]) { } else if (_SBJSONSelector && [object respondsToSelector:_SBJSONSelector]) {
NSString *JSONString = nil; NSString *JSONString = nil;
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[data methodSignatureForSelector:_SBJSONSelector]]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[object methodSignatureForSelector:_SBJSONSelector]];
invocation.target = data; invocation.target = object;
invocation.selector = _SBJSONSelector; invocation.selector = _SBJSONSelector;
[invocation invoke]; [invocation invoke];
[invocation getReturnValue:&data]; [invocation getReturnValue:&data];
data = [JSONString dataUsingEncoding:NSUTF8StringEncoding]; data = [JSONString dataUsingEncoding:NSUTF8StringEncoding];
} else if (_YAJLSelector && [data respondsToSelector:_YAJLSelector]) { } else if (_YAJLSelector && [object respondsToSelector:_YAJLSelector]) {
@try { @try {
NSString *JSONString = nil; NSString *JSONString = nil;
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[data methodSignatureForSelector:_YAJLSelector]]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[object methodSignatureForSelector:_YAJLSelector]];
invocation.target = data; invocation.target = object;
invocation.selector = _YAJLSelector; invocation.selector = _YAJLSelector;
[invocation invoke]; [invocation invoke];