2016-04-27 121 views
0

将BOOL转换为JSON AFNetworking不希望在JSON请求中将BOOL值表示为true/false。试图@YES,NSNumber的只是没有机会,将其转换为0或1使用AFNetworking 3.X ObjectiveC

NSMutableDictionary *data = [[NSMutableDictionary alloc] init]; 
[data setValue:@YES forKey:@"favorite"]; 

NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 
[params setObject:data forKey:@"data"]; 

然后给这个PARAM字典AfNetworking 3

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 

manager.requestSerializer = serializer; 


[manager POST:@"HTTPS://JSON URL" parameters:params progress:^(NSProgress *uploadProgress) { 
} success:^(NSURLSessionDataTask * task, id responseObject) { 
//SUCCESS 
} failure:^(NSURLSessionDataTask *task, NSError *error) { 
//FAILED REQUEST 
}]; 
+1

把一个布尔值转换成字典的方法是使用一个NSNumber就像你在做什么一样。每次我与JSON进行交互时,我都会这样做。有用。你为什么认为它不起作用? – Fogmeister

+0

我使用NSLog记录“params”,并且有0或1个 –

+1

是的,这就是它的样子。为什么这是一个问题?这应该看起来像。 – Fogmeister

回答

0

使用[NSNumber numberWithBool:YES]

0

这是我怎么样了一直在切换布尔值,然后使用AFNetworking将它们作为JSON布尔值发送:

self.petActive = ! self.petActive; 
    NSNumber* newFMPstate = self.petActive ? @YES : @NO; 
    NSDictionary *fmpDict = @{ @"petActive": newFMPstate }; 
    /// ... assemble endpoint for put and pass it fmpDict 

个@YES和@NO分别生成这个JSON

{"petActive":true} 
{"petActive":false} 

(我知道三元运算符是多余的,但它似乎增加可读性)