A very simple objective-c framework that maps a JSON response from NSDictionary or NSArray to an NSObject subclass for iOS.
Inspired by RestKit. A very simple objective-c framework that maps a JSON response from NSDictionary or NSArray to NSObject subclasses for iOS.
Copy all files in JTObjectMapping/ into your project.
$ pod search JTObjectMapping
, you should be able to specify the right version in your Podfile. Here’s more information about CocoaPods.
Suppose this is a JSON User object response represented in NSDictionary after parsing
{ "create_date" = "1970-01-01T00:00:00+0000"; "p_age" = 30; "p_childs" = ( Mary, James ); "p_name" = Bob; "p_title" = Manager; "social_networks" = { "twitter" = "@mystcolor"; "facebook" = "yourFacebookID"; } }
Get ready with your JSON use [NSObject objectFromJSONObject:json mapping:mapping] to convert.
...
NSDictionary *json = <Parsed JSON response from above>;
//
// Use +[NSObject objectFromJSONObject:mapping:] to convert
// the NSDictionary into your JTUserTest object
//
JTUserTest *user = [JTUserTest objectFromJSONObject:json mapping:mapping];
...
Define necessary mappings, from a dictionary key to a property keyPath.
// Define the mapping of a nested custom object - JTSocialNetworkTest
NSDictionary *socialNetworkMapping = [NSDictionary dictionaryWithObjectsAndKeys:
@"twitterID", @"twitter",
@"facebookID", @"facebook",
nil];
NSDictionary *mapping = [NSDictionary dictionaryWithObjectsAndKeys:
@"name", @"p_name",
@"title", @"p_title",
@"age", @"p_age",
@"childs", @"p_childs",
[NSDate mappingWithKey:@"createDate"
dateFormatString:@"yyyy-MM-dd'T'HH:mm:ssZ"], @"create_date",
[JTSocialNetworkTest mappingWithKey:@"socialNetwork"
mapping:socialNetworkMapping], @"social_networks",
nil];
Of course you need to define your own User object with corresponding @synthesize properties, and thats all for what you need.
// JTSocialNetworkTest.h
@interface JTSocialNetworkTest
@property (nonatomic, copy) NSString *twitter;
@property (nonatomic, copy) NSString *facebook;
@end
// JTSocialNetworkTest.m
@implementation
@end
// JTUserTest.h
@interface JTUserTest : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSNumber *age;
@property (nonatomic, strong) NSDate *createDate;
@property (nonatomic, strong) NSArray *childs;
@property (nonatomic, strong) JTSocialNetworkTest *socialNetwork;
@end
// JTUserTest.m
#import "JTUserTest.h"
@implementation JTUserTest
@end
For more detailed usage, see JTObjectMappingTests.m, will be adding more detailed description soon.
v1.1.2
v1.1.1
v1.1
v1.0.7
v1.0.6
#define JTOBJECTMAPPING_DISABLE_KEYPATH_SUPPORT = 1
to disable it.v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.1