restkit 0.20 - No Quotes in JSON for ManagedObject? -


in reading documentation , sample code posting objects, must have missed relating serializing entities. appears possible send entity postobject , expect use supplied mapping produce json , post server.

i have been able map , post object, json not coming through formed.

i have been able hand parameterize object , valid json. i'm dig source-code, wondering i'm missing.

here's code , results i'm seeing. insight/help appreciated!

i have following managed object:

@interface tfuser : nsmanagedobject  @property (nonatomic, retain) nsstring * first_name; @property (nonatomic, retain) nsstring * last_name;  @end 

i have following code map it:

+(rkentitymapping *) mapping {   if (_mapping == nil)   {     rkobjectmanager *objectmanager = [rkobjectmanager sharedmanager];     assert(objectmanager && "object manager not initialized!?");      rkmanagedobjectstore *managedobjectstore = objectmanager.managedobjectstore;     assert(objectmanager && "no object store!?");      // user entity map     _mapping = [rkentitymapping mappingforentityforname:@"tfuser"                                    inmanagedobjectstore:managedobjectstore];     [_mapping addattributemappingsfromdictionary:@{                                                    @"first_name": @"first_name",                                                    @"last_name": @"last_name"                                                    }];     _mapping.identificationattributes = @[ @"first_name" ];   }    return _mapping; } 

i have following code test serializing 1 managed object directly:

  tfuser *user = (tfuser*) [self.managedobjectcontext insertnewobjectforentityforname:@"tfuser"];   user.first_name = @"mickey";   user.last_name = @"mouse";    nserror *error;   rkrequestdescriptor *requestdescriptor =   [rkrequestdescriptor requestdescriptorwithmapping:[tfuser.mapping inversemapping]                                         objectclass:[tfuser class]                                         rootkeypath:@"user"                                              method:rkrequestmethodany];    nsdictionary *parameters = [rkobjectparameterization parameterswithobject:user                                                           requestdescriptor:requestdescriptor                                                                       error:&error];    nsdata *jsondata= [rkmimetypeserialization datafromobject:parameters mimetype:rkmimetypejson error:&error];   nsstring *message = [[nsstring alloc] initwithdata:jsondata encoding:nsasciistringencoding];    nslog(@"user json:\r\n%@", message); 

and produces i'd expect:

user json: {   "user" : {     "first_name" : "mickey",     "last_name" : "mouse"   } } 

when postobject managed object directly:

  [[rkobjectmanager sharedmanager] postobject:user                                          path:@"/user"                                    parameters:nil                                       success:^(rkobjectrequestoperation *operation, rkmappingresult *mappingresult) {                                         nslog(@"success");                                       }                                       failure:^(rkobjectrequestoperation *operation, nserror *error) {                                         nslog(@"error");                                       }]; 

the server receives:

{ user: { first_name: 'mickey', last_name: 'mouse' } } 

and parser complains can't process json.

why getting different result? how can post produce correct json server?

thanks! - kevin

the code has been working entire time. debugging , code on server broken.

by inspecting logging of body request being sent server apparent json well-formed leaving client. here is:

request.headers={     accept = "application/json";     "accept-language" = "en;q=1, fr;q=0.9, de;q=0.8, zh-hans;q=0.7, zh-hant;q=0.6, ja;q=0.5";     "content-type" = "application/json; charset=utf-8";     "user-agent" = "treefort/1.0 (iphone simulator; ios 7.0.3; scale/2.00)"; } request.body={   "user" : {     "first_name" : "mickey",     "last_name" : "mouse"   } } 

the code on server doing this:

            console.log req.body                                                                                                                                                           request = json.parse req.body                                                                                                                                                  user = request.user                                                                                                                                                

the json has been processed objects time gets here. means log line dumping object log, not text of received body. second problem there no reason explicitly requesting json parse of body. it's been converted objects.

to fix changed code be:

        user = req.body.user 

sometimes helps have else say... should working. i've been banging head on days. thanks!


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -