AFNetworking JSON序列化问题
我发送JSON(最初存储在一个NSDictionary)使用AFNetworking。 我的对象看起来像这样(取自文档评论):
/** * Sends a create request to the API server * Success will be a dictionary containing: * * playlistSession: { * "mediaSegments": {}, * "mediaSequence": 0, * "timeElapsed": 0, * "config": { * "maxSegments": 4, * "targetDuration": 10 * }, * "meta": { * "id": "test", * "shouldBeAvailable": false, * "isAvailable": false, * "shouldFinish": false, * "isFinished": false * } * } * * And should be appended to the sessionData dictionary */
我在服务器上得到这个:
{ fileSequence: '3', playlistSession: { config: { maxSegments: '4', targetDuration: '10' }, mediaSequence: '0', meta: { id: 'MioeXvdiwB', isAvailable: '0', isFinished: '0', shouldBeAvailable: '0', shouldFinish: '0' }, timeElapsed: '0' } }
数字和布尔值应该是字符和string。 难道我做错了什么?
这是请求(对象存储在一个NSMutableDictionary
):
self.sessionData[fileSequenceKey] = [NSNumber numberWithInt:fileNumber]; self.sessionData[playlistSessionKey][metaKey][shouldFinishKey] = [NSNumber numberWithBool:lastSegment]; NSString *urlString = [[NSURL URLWithString:[NSString stringWithFormat:kAppendPath, self.postPath] relativeToURL:self.manager.baseURL] absoluteString]; NSURLRequest *request = [self.manager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:urlString parameters:self.sessionData constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { NSError *error; [formData appendPartWithFileURL:target name:mediaSegmentKey error:&error]; }]; AFHTTPRequestOperation *operation = [self.manager HTTPRequestOperationWithRequest:request success:[self successBlock:lastSegment] failure:[self failureBlock:lastSegment]]; [operation setUploadProgressBlock:[self completionBlock]]; [self.manager.operationQueue addOperation:operation]; fileNumber++;
我结束了添加一个方法到我的NSDictionary+JSON
类别称为JSONString
/** * Serializes a JSON string to be sent over the network * * @return The serialized playlist session JSON string */ - (NSString*)JSONString { NSError *error; NSData *serializedData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error]; NSString *JSONString = [[NSString alloc] initWithData:serializedData encoding:NSUTF8StringEncoding]; return JSONString; }
返回一个不需要强制或parsing的NSString
,只是简单的调用nodejs
JSON.parse()