我正在使用AFNetworking发送JSON(最初存储在NSDictionary中)。我的对象看起来像这样(取自文档评论):
/**
* 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' } }
字符和字符串应该是数字和布尔值。我做错了吗?
这是请求(对象存储在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++;
答案 0 :(得分:2)
我最后在名为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;
}
返回不需要强制或解析的NSString
,只需简单调用JSON.parse()
中的nodejs