restkit - Rails way to change current json output -
restkit - Rails way to change current json output -
i'm working json below. outer label missing.
[{ "id":1, "updated_at":"2012-01-13t17:13:47z", "created_at":"2012-01-13t17:13:47z", "name":"dave"}, { "id":2, "updated_at":"2012-01-13t17:13:55z", "created_at":"2012-01-13t17:13:55z", "name":"steve" }]
i think restkit expects
{***people:*** [{ "id":1, "updated_at":"2012-01-13t17:13:47z", "created_at":"2012-01-13t17:13:47z", "name":"dave"}, { "id":2, "updated_at":"2012-01-13t17:13:55z", "created_at":"2012-01-13t17:13:55z", "name":"steve" }] } @interface info : nsobject { person *person; nsarray *dogs; } @property (nonatomic ,retain) person *person; @property (nonatomic ,retain) nsarray *dogs; @end @interface person : nsobject { nsstring *name; nsnumber *personid; nsdate *updatedat; nsdate *createdat; } @property (nonatomic , retain) nsdate * createdat; @property (nonatomic , retain) nsdate * updatedat; @property (nonatomic , retain) nsnumber *personid; @property (nonatomic , retain) nsstring *name; @end
here mapping:
rkobjectmapping* usermapping = [rkobjectmapping mappingforclass:[person class]]; [usermapping mapkeypath:@"updated_at" toattribute:@"updatedat"]; [usermapping mapkeypath:@"created_at" toattribute:@"createdat"]; [usermapping mapkeypath:@"name" toattribute:@"name"]; [usermapping mapkeypath:@"id" toattribute:@"personid"]; rkobjectmapping* dogmapping = [rkobjectmapping mappingforclass:[dog class]]; [dogmapping mapkeypath:@"created_at" toattribute:@"createdat"]; [dogmapping mapkeypath:@"person_id" toattribute:@"spersonid"]; [dogmapping mapkeypath:@"name" toattribute:@"name"]; [dogmapping mapkeypath:@"updated_at" toattribute:@"updatedat"]; [dogmapping mapkeypath:@"id" toattribute:@"dogid"]; [[rkobjectmanager sharedmanager].mappingprovider setmapping:usermapping forkeypath:@"person"]; rkobjectrouter * router = [rkobjectmanager sharedmanager].router; [router routeclass: [person class] toresourcepath:@"/people/:personid"]; [router routeclass: [person class] toresourcepath:@"/people" formethod:rkrequestmethodpost]; rkobjectmapping *personserializationmapping= [rkobjectmapping mappingforclass: [nsdictionary class]]; [personserializationmapping mapkeypath:@"name" toattribute:@"person[name]"]; [[rkobjectmanager sharedmanager].mappingprovider setserializationmapping:personserializationmapping forclass: [person class]]; person* dave =[[person alloc]init ]; dave.name = @"data"; nslog(@"%@", [daveliu name]); //nslog("name %@", daveliu.description ); [[rkobjectmanager sharedmanager] postobject:dave delegate:self];
update! got above code work. save rails server, i'm getting keypath error still!
processing peoplecontroller#create (for 127.0.0.1 @ 2012-01-16 06:12:18) [post] parameters: {"person"=>{"name"=>"data"}} person create (0.4ms) insert "people" ("updated_at", "created_at", "name") values('2012-01-16 14:12:18', '2012-01-16 14:12:18', 'data') completed in 11ms (view: 1, db: 0) | 200 ok [http://localhost/people] w restkit.object_mapping:rkobjectmapper.m:60 adding mapping error: not find object mapping keypath: '' e restkit.network:rkobjectloader.m:178 encountered errors during mapping: not find object mapping keypath: '' error domain=org.restkit.restkit.errordomain code=1001 "could not find object mapping keypath: ''" userinfo=0x4e6c4e0 {=rkobjectmapperkeypath, nslocalizeddescription=could not find object mapping keypath: ''}
ruby-on-rails restkit
Comments
Post a Comment